Python : __init__.py的作用

简介:

一、__init__.py的作用:

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

       __init__.py的作用有如下几点:

       1. 相当于class中的def __init__(self):函数,用来初始化模块。

       2. 把所在目录当作一个package处理

       3. from-import 语句导入子包时需要用到它。 如果没有用到, 他们可以是空文件。

           如引入package.module下的所有模块
           from package.module import * 
           这样的语句会导入哪些文件取决于操作系统的文件系统. 所以我们在__init__.py 中加入 __all__变量. 

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


二、python在执行import语句时的步骤

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

    在执行第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。

目录
相关文章
|
3月前
|
Python
Python 的其他主题:Python 中的 `__init__.py` 文件有什么作用?
Python 的其他主题:Python 中的 `__init__.py` 文件有什么作用?
|
4月前
|
Python
Python 基础知识:Python 中的 `__init__` 和 `__new__` 方法有什么区别?
Python 基础知识:Python 中的 `__init__` 和 `__new__` 方法有什么区别?
|
28天前
|
算法 开发者 Python
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
20 0
|
1月前
|
Python
Python中__new__和__init__的区别与联系
Python中__new__和__init__的区别与联系
19 0
|
1月前
|
Python
|
2月前
|
C++ 计算机视觉 Python
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
38 0
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
|
2月前
|
Python
解释Python中的`__init__`和`__new__`方法的区别。
解释Python中的`__init__`和`__new__`方法的区别。
|
3月前
|
Java C++ Python
python中的类,对象,成员方法,构造方法,__init__,__lt__,__le__,__eq__
python中的类,对象,成员方法,构造方法,__init__,__lt__,__le__,__eq__
34 0
|
8月前
|
设计模式 存储 Python
【从零学习python 】46. Python中的__new__和__init__方法解析及单例设计模式
【从零学习python 】46. Python中的__new__和__init__方法解析及单例设计模式
41 0
|
4月前
|
供应链 安全 开发工具
供应链安全情报 | 恶意py包伪装代理SDK进行后门攻击,目标锁定python开发者
2023年11月28号,悬镜供应链安全实验室在Pypi官方仓库(https://pypi.org)监测到两起伪装成http和socks5代理SDK的开源组件投毒事件。python开发者一旦下载安装这些投毒Py包(libproxy、libsocks5),会触发执行Py包中的恶意代码,最终将导致开发者系统被投毒者植入恶意后门。
44 0