__init__.py文件的作用是将文件夹变为一个python包,每个包目录下都会有一个__init__.py文件,这个文件是必须存在的,否则,python就把这个目录当成普通目录,而不是一个包。__init__.py可以是一个空文件,也可以有python 代码。
我们在导入一个包时,实际上导入了它的__init__.py文件,并且这个文件会自动执行,所以我们可以在__init__.py文件中做一些包导入时的一些初始化工作。
比如,我们可以在__init__.py文件中导入其他模块或者包:
# package_a
# __init__.py
import math
import urllib
import matplotlib
import gensim
如上,我们在导入package_a 时,__init__.py 被执行,那么上面的import包也会被导入。
另外,__init__.py 中还有一个重要的变量,叫做 __all__。有时候我们会把一个模块中的所有内容导入,如使用
from PackageName import *
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
# __init__.py
__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]