基本原理
__init__.py文件的主要作用有:
- 标识包:告诉Python解释器这个目录应该被视为一个Python包。
- 初始化代码:可以在这个文件中执行包级别的初始化代码。
- 控制可访问性:通过在__init__.py中重新组织导入的模块和包,可以控制从包外部可以访问哪些模块。
用于标识包(最重要的功能)
在Python中,任何包含__init__.py文件的目录都被视为一个包。init.py文件是必须的,即使它是空的,它也必须存在,否则Python解释器将不会将该目录视为包。
初始化代码
__init__.py文件可以用来执行一些初始化操作,当包被首次导入时,这些代码会被自动执行。
示例.png
在__init__.py文件中写上
from .module1 import foo
from .module2 import Bar
这样,在使用包时,可以直接做到更加简洁的导入:
from my_package import foo, Bar
而不是
from my_package.module1 import foo
from my_package.module2 import Bar
控制可访问性
通过在__init__.py中指定哪些模块是包的一部分,可以控制从包外部可以导入哪些模块。
通过在__init__.py文件中定义__all__变量,可以控制当使用from package import *时,哪些模块或子包会被导入。__all__应该是一个包含模块名(字符串)的列表。
# example_package/__init__.py
from . import module1, module2
__all__ = ['module1']