开发者社区> cloudcoder> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python __init__.py 作用详解
原文地址:https://www.cnblogs.com/Lands-ljk/p/5880483.html __init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。
2392 0
深度之眼(十三)——Python:类-面向对象的编程(下)
深度之眼(十三)——Python:类-面向对象的编程(下)
0 0
深度之眼(十三)——Python:类-面向对象的编程(上)
深度之眼(十三)——Python:类-面向对象的编程(上)
0 0
深度之眼(九)——python函数--面向过程的编程(下)
深度之眼(九)——python函数--面向过程的编程(下)
0 0
深度之眼(九)——python函数--面向过程的编程(上)
深度之眼(九)——python函数--面向过程的编程(上)
0 0
Python编程:MySQLdb模块对数据库的基本增删改查操作
Python编程:MySQLdb模块对数据库的基本增删改查操作
0 0
Python编程:entry_points将Python模块转变为命令行工具
Python编程:entry_points将Python模块转变为命令行工具
0 0
Python编程:SQLAlchemy查询数据没有变化
遇到一个问题,使用一条相同的sql,多次查询数据库,每次数据都一样,而且数据库更新了,也没有查到新数据 经过Google,发现是SQLAlchemy的缓存机制导致的 设置隔离级别参数isolation_level 就可以解决
0 0
Python编程:运行目录或zip压缩文件
Python编程:运行目录或zip压缩文件
0 0
Python编程:PyThink数据库交互模块提高爬虫编写速度
Python编程:PyThink数据库交互模块提高爬虫编写速度
0 0
+关注
cloudcoder
热衷于大数据处理技术研究、使用 关注中间件技术
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载