在 Python 中,__init__.py 文件的作用非常简单:

  1. 标记目录是一个 Python 包(Python 2 和 Python 3 早期版本):
    如果一个目录下有 __init__.py,Python 就会把这个目录当作一个「包」(package),你才能用 import package.module 的方式导入里面的模块。
  2. 控制包的导入行为(所有版本):
    当你想在导入包时自动执行一些代码,或者定义 from package import * 时要导出的内容时,才需要写 __init__.py

什么时候真正需要__init__.py?

必需场景

  • Python 3.3之前的版本:所有作为包使用的目录必须包含此文件(即使是空文件)
  • 需要在导入时执行初始化代码:如注册插件、设置日志或加载配置
  • 定制导入行为:如定义__all__或集中导出子模块功能

可选场景

  • Python 3.3及更新版本:引入了"隐式命名空间包"(PEP 420),允许不含__init__.py的目录作为包使用
  • 简单的模块组织:当你只需要逻辑分组而不需要特殊初始化时

一句话总结

现代 Python(3.3+)里,__init__.py 只在你想控制包的行为时才需要,其他时候可以不用。