__init__.py的作用

对于模块, 其有对应的*.py文件.

对于包, 包下的__init__.py文件就是其对应的程序文件. 导入包, 就等同于导入该包中的__init__.py文件, 因此完全可以在__init__.py文件中直接编写实现模块功能的变量, 函数和类, 但实际上并不推荐这么做, 因为包的主要作用是包含其它的模块. 因此, __init__.py文件的主要作用是导入该包内的其它模块, 而不再需要一个一个的导入.

也就是说, 通过在__init__.py文件中使用import语句将必要的模块导入, 这样当向其它程序中导入此包时, 就可以直接导入包名, 也就是import packagefrom package import *的形式即可.

__init__.py文件中也可以定义__all__变量, 用来定义from package import *时导入的模块.

Example:

# __init__.py
__all__ = ['os', 'sys', 're', 'urlib']


# a.py
from package import *
# 导入在__init__.py文件中__all__列表中注册的模块和包