python导入模块时的执行顺序

Posted 爬虫上的雪碧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python导入模块时的执行顺序相关的知识,希望对你有一定的参考价值。

当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作:

第一步,创建一个新的module对象(它可能包含多个module)

第二步,把这个module对象插到sys.module中

第三步,装载module的代码(如果需要,则必须先编译)

第四步,执行新的module中对应的代码。

在执行第三步时,首先需要找到module程序所在的位置,搜索的顺序是:

当前路径(以及从当前目录指定的sys.path),pythonpath,然后是python安装时设置的相关默认路径。正因为存在这样的顺序,所以如果当前路径或pythonpath中存在与标准module相同的module,则会覆盖标准module。也就是如果当前目录下存在xml.py,那么执行import xml时,导入的是当前目录下的module,而不是系统标准的xml。所以我们平常起名字时不能乱起。

了解这些之后,我们就可以先构建一个package,以普通module的方式导入,这样就可以直接访问此package中的各个module。python2中package必须包含一个__init__.py的文件。拥有这个文件使得python解释器将子目录整个也当成一个模块,然后直接通过“import 子目录.模块”导入即可。如果没有这个文件就会被当成一个普通文件夹,而不是模块。

以上是关于python导入模块时的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

016-1 模块-模块的加载顺序导入执行流程

python教程:模块的搜索路径

模块的搜索路径

Python 模块化 模块搜索顺序重复导入模块加载列表

import re

python模块讲解