• python在导入模块时,即import时究竟有哪些动作?


    python在导入模块时,即import时究竟有哪些动作?在python中,导入并非只是把一个文本文件插入到另一个文件。导入其实是运行时的运算,程序第一次导入指定文件时,会执行以下三个步骤:
    1、找到模块文件
    2、编译成位码(即pyc文件)
    3、执行模块的代码来创建其所定义的变量(你没看错,导入时代码是会执行的)
    需要明确的事,模块导入只有在第一次导入时才会进行。此后,导入相同模块时,会跳过这三个步骤,而只提取内存中已经加载的模块对象。从技术上,Python把载入的模块储存在一个名为sys.modules的表中,并在第一次导入操作时,检查该表。如果不存在便会启动这三个过程。
    1、搜索
    搜索分为4个步骤
    (1)程序的主目录
    通常是包含程序的顶层脚本文件的目录。

    通常情况下,使用如下可以获取的主程序目录

    1. import os
    2. os.getcwd()
    3. 'C:\\Users\\AppData\\Local\\Programs\\Python\\Python38'

    (2)标准库目录
    即python的安装目录,sys.path可以获取
    (3)任何.pth文件中定义的目录
    把文件路径在.pth文件中一行一行的列出。例如:你可以定义一个名为myconfig.pth文件放在Python安装目录的顶层(C:/python30或者其子目录lib/sitepackages中)
    注意:以上4个方法是有先后顺序的,假如上述4个目录或文件中定义了一个相同的文件名,内容却不相同,以最先找到的为标准
    2、编译Python会检查文件的时间戳,如果发现字节码文件比源代码文件旧,就会在程序运行中重新生成字节码,反之,跳过该步骤。此外,如果发现仅有字节码没有源代码,则直接加载字节码。

    3、运行
    最后操作是执行模块的字节码。文件中的所有语句均会执行,从头到尾,此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性。

  • 相关阅读:
    LLM增强LLM;通过预测上下文来提高文生图质量;Spikformer V2;同时执行刚性和非刚性编辑的通用图像编辑框架
    5.PHPwhile,foreach和for循环
    C++ STL的空间配置器
    软件工程复习
    NVMe SSD 学习总结 03: 浅析SSD技术基础NAND-Flash原理(NANA结构、工作原理、写放大)
    QLineEdit
    (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
    优化器算法
    SpringCloud04 --- Nacos集群搭建
    图像处理之图像质量评价指标PSNR(峰值信噪比)
  • 原文地址:https://blog.csdn.net/onemorepoint/article/details/126354571