在 Python 中,__init__.py
文件的作用非常简单:
- 标记目录是一个 Python 包(Python 2 和 Python 3 早期版本):
如果一个目录下有__init__.py
,Python 就会把这个目录当作一个「包」(package),你才能用import package.module
的方式导入里面的模块。 - 控制包的导入行为(所有版本):
当你想在导入包时自动执行一些代码,或者定义from package import *
时要导出的内容时,才需要写__init__.py
。
什么时候真正需要__init__.py?
必需场景
- Python 3.3之前的版本:所有作为包使用的目录必须包含此文件(即使是空文件)
- 需要在导入时执行初始化代码:如注册插件、设置日志或加载配置
- 定制导入行为:如定义
__all__
或集中导出子模块功能
可选场景
- Python 3.3及更新版本:引入了"隐式命名空间包"(PEP 420),允许不含
__init__.py
的目录作为包使用 - 简单的模块组织:当你只需要逻辑分组而不需要特殊初始化时
一句话总结
现代 Python(3.3+)里,__init__.py
只在你想控制包的行为时才需要,其他时候可以不用。