有用且仍推荐保留,它是明确标识包最可靠的方式;虽Python 3.3+支持隐式命名空间包,但存在工具兼容、相对导入失败等局限,并提供初始化入口、API控制及结构意图表达等不可替代功能。
有用,而且依然推荐保留。
虽然 Python 3.3+ 引入了隐式命名空间包(PEP 420),允许没有 __init__.py 的目录也被识别为包,但这种机制有局限:
只要包被导入,__init__.py 中的代码就会自动执行一次。这个特性在现代项目中仍广泛用于:
用户不希望看到你的内部工具模块(如 _utils.py 或 legacy/),而只想用 from mypkg import load, dump。这靠的就是 __init__.py 的显式导出:

即使只留一个空的 __init__.py,它也在传递清晰意图:“这个目录是设计为包来使用的”。这种显式性符合 Python 之禅,也避免团队成员误删关键结构、或新同事困惑“为什么这个文件夹不能被 import”。