Python : __init__.py的做用

1、__init__.py的做用: python

        在使用PyDev插件,在Eclipse建立package时,会自动在package所在的目录自动建立一个__init__.py文件,且文件内容为空。这个文件有什么有呢? 函数

       __init__.py的做用有以下几点: spa

       1. 至关于class中的def __init__(self):函数,用来初始化模块。 操作系统

       2. 把所在目录看成一个package处理
插件

       3. from-import 语句导入子包时须要用到它。 若是没有用到, 他们能够是空文件。 xml

           如引入package.module下的全部模块
           from package.module import * 
           这样的语句会导入哪些文件取决于操做系统的文件系统. 因此咱们在__init__.py 中加入 __all__变量. 
对象

           该变量包含执行这样的语句时应该导入的模块的名字. 它由一个模块名字符串列表组成. ip


2、python在执行import语句时的步骤
字符串

    1:建立一个新的,空的module对象(它可能包含多个module);
    2:把这个module对象插入sys.module中
    3:装载module的代码(若是须要,首先必须编译)
    4:执行新的module中对应的代码。
it

    在执行第3步时,首先要找到module程序所在的位置,其原理为:若是须要导入的module的名字是module1,则解释器必须找到module1.py。

    它首先在当前目录查找,而后是在环境变量PYTHONPATH中查找。PYTHONPATH能够视为系统的PATH变量一类的东西,其中包含若干个目录。若是PYTHONPATH没有设定,或者找不到module1.py,则继续搜索与python的安装设置相关的默认路径,在Unix下,一般是/usr/lib64/python2.6/。

    事实上,搜索的顺序是:当前路径 (以及从当前目录指定的sys.path),而后是PYTHONPATH,而后是python的安装设置相关的默认路径。正由于存在这样的顺序,若是当前 路径或PYTHONPATH中存在与标准module一样的module,则会覆盖标准module。也就是说,若是当前目录下存在xml.py,那么执 行import xml时,导入的是当前目录下的module,而不是系统标准的xml。

相关文章
相关标签/搜索