我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

python代码文件中,经常会出现一个__init__.py文件。顾名思义,这个文件就是用来初始化python结构的,可以自动执行一些代码。

苏南大叔:python代码中的__init__.py文件有什么用? - python__init__py
python代码中的__init__.py文件有什么用?(图6-1)

大家好,这里是苏南大叔的博客“程序如此灵动”。本文讲述python代码中的__init__.py文件。测试环境:win10python3.6.8

import时,自动执行代码

在执行import引入模块代码的时候,会自动执行模块下的__init__.py文件里面的相关代码,路径上涉及的多个__init__.py文件都会被自动执行。测试文件目录结构如下:

苏南大叔:python代码中的__init__.py文件有什么用? - 目录结构
python代码中的__init__.py文件有什么用?(图6-2)

主程序代码是:

from root.sub1 import s11
import root.sub1.s12

其余文件的代码,都是:

print(__file__)

可以看到主程序import的路径上,涉及了2个__init__.py文件,都被自动执行了。而且在同一个py文件中,这些自动执行的__init__.py文件,每个只执行一次,这些表现上来看,有点像phprequire_once函数。

苏南大叔:python代码中的__init__.py文件有什么用? - 生命周期内仅执行一次
python代码中的__init__.py文件有什么用?(图6-3)

特殊变量__all__

__init__.py定义变量__all__,可以控制import *的具体条目。想让谁代表大家就加载谁,定义一个数组就行了。

苏南大叔:python代码中的__init__.py文件有什么用? - 测试代码结构2
python代码中的__init__.py文件有什么用?(图6-4)

不定义__all__的话,目前的测试结果是不引入任何文件,似乎有些不够智能。

苏南大叔:python代码中的__init__.py文件有什么用? - init_all
python代码中的__init__.py文件有什么用?(图6-5)

主程序代码如下:

from root.sub3 import *

不能写成

import root.sub3.*

直接报错。

苏南大叔:python代码中的__init__.py文件有什么用? - 写法报错
python代码中的__init__.py文件有什么用?(图6-6)

相关链接

总结

未知的东西太多,学不过来。承认自己的平凡,挺好的。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python