__init__.py文件的作用:
1、标识package
2、导包简化
3、配置模块初始化
一、导包自动执行
当导入一个包时,会自动加载其包中的__init__.py文件
来看如下例子:
目录结构:
package1中的__init__.py:
package1.__init__.py print("this is package1‘s __init__.py")
我们在e.py中导入package1这个包
e.py import package1
运行e.py,结果如下:
我们可以看到,__init__.py中的语句被执行了。
同样,如果我们不是导入的整个包,而是导入包中的某个或多个模块,__init__.py也会被加载。
结论:当导入包或包中的模块时,包中__init__.py文件会被自动加载。
tips:那如果__init__.py中有函数、变量、类时,如何调用呢?
答案是:用包名调用即可。(当然,如果需要用包名调用__init__.py中的函数、变量、类时,是需要导入整个包才能这样去调用的)
执行结果:
二、简化导包
如下结构目录:
如果我们要在其他模块中用到这个包中的所有模块中的内容,按照前面的方式我们只能逐一导入每个模块
要导入的模块比较少时还好,一旦数量很多将会显得非常臃肿。
那有什么办法解决这个问题呢?
答案是在__init__.py中定义__all__(是不是很熟悉,没错,在导入模块中的所有内容时,就用到了这个属性)
我们看如下例子
然后我们在e.py中导入所有模块
这样,就可以一次性导入所有的模块了。
其实,我们还可以直接导入包,直接导入包后就用包名来调用对应的模块,如下图:
三、初始化操作
__init__.py文件也是一个.py文件,因此可以把一些初始化的操作写入其中,当导入包或者包中的模块时,便会进行初始化操作。
原文:https://www.cnblogs.com/ctltest/p/14632530.html