主要观点:
- 常见误解认为 Python 包没有
__init__.py
文件就无法工作,实则自 Python 3.3 起其为可选。 __init__.py
文件常被用于标记目录为 Python 包,虽现代 Python 可省略该文件仍能运行相同的导入,但明确使用有诸多好处。- 省略
__init__.py
文件会导致工具(如mypy
、ruff
)难以理解包结构,可能在代码库增长后出现问题,是在代码库中放置维护定时炸弹。 - 省略
__init__.py
文件会创建“隐式命名空间包”,虽有好处但很少使用,除非需要其高级功能,否则应坚持使用__init__.py
文件。
关键信息:
__init__.py
文件标记目录为包,可省略但有影响。- 无
__init__.py
文件时对目录是否为包会产生疑惑,影响代码导入。 - 工具需要理解包结构,省略
__init__.py
文件可能导致工具问题。 - 隐式命名空间包有特点及使用场景。
重要细节:
- 示例代码结构展示有和无
__init__.py
文件时的差异及影响。 - 提及可通过
ruff
或flake8
插件强制使用__init__.py
文件。 - 说明
__init__.py
文件可包含代码,可参考 Python 文档。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。