电子说
python模块对应python程序文件,每个python文件都是一个模块。
模块a.py导入模块b.py后,在a.py可以使用使用b.py的全部变量。
python程序通常包括顶层主体文件、模块文件、标准库文件。
顶层主体文件通常是程序运行入口,会导入模块文件,模块文件导入标准库文件。
如上图,main.py为顶层主体文件,程序从此文件开始运行。
main文件导入mod1.py模块文件,使用里面的模块属性。
mod1.py模块文件导入mod2.py和标准库模块文件。
标准库模块文件为python自带模块文件。
python导入模块在程序运行时执行。
python首次导入模块,会执行三个步骤:
步骤 | 步骤名称 | 步骤描述 |
---|---|---|
1 | 搜索 | 通过模块搜索路径找到模块文件 |
2 | 按需编译 | 首次导入需要编译,生成.pyc文件。若.pyc文件时间戳小于.py文件,则进行编译。只有.pyc则直接加载,不进行编译。 |
3 | 运行 | 从上到下执行模块代码,创建模块定义的对象。 |
python将导入的模块存储到sys.modules字典中,
每次导入模块时检查sys.modules是否存要导入的模块,
若存在,则不再导入(跳过首次导入模块的3个步骤),直接从内存获取模块,
若不存在,则执行首次导入模块的3个步骤。
注:导入模块后,模块文件被更新,通过reload导入最新模块文件。
python通过模块搜索路径找到模块文件进行导入。
按下面顺序搜索模块搜索路径,这4个路径组成sys.path:
顺序 | 路径 |
---|---|
1 | 程序主目录 |
2 | PYTHONPATH目录(若有),用于路径拓展 |
3 | 标准库目录 |
4 | .pth文件(若有),用于路径拓展 |
python的模块搜索路径保存在sys.path列表。
手动添加到sys.path列表的路径,在程序结束后,将不会再生性。
模块搜索路径存在重名模块时,导入的模块存在不确定性,所以pthon模块应该避免重名。
全部0条评论
快来发表一下你的评论吧 !