为什么python打包文档说包的__init__.py文件应该是空的?

pye*_*biz 4 python

根据打包 Python 项目的文档,__init__.py应该为空。我想知道为什么?因为我将某些对象放置在文件中__init__.py,这些对象在 Package 中的每个模块中使用。在我的本地环境中检查一堆__init.py__文件中是否存在诸如 importlib、multiprocessing 等标准包。所有这些文件中都有一堆代码。

The*_*Guy 7

的唯一目的__init__.py是表明包含此文件的文件夹是一个包,并将此文件夹视为包,这就是为什么建议将其留空。

考虑以下层次结构:

foo
    __init__.py
    bar.py
Run Code Online (Sandbox Code Playgroud)

当你使用from foo import bar或 时,Python解释器将在文件夹中import foo.bar查找,如果找到,则模块将被导入,否则不会;然而,随着时间的推移,这种行为已经发生了变化,即使缺少模块/包,它也可能能够成功导入,但请记住 Python 之禅:显式优于隐式,因此拥有它总是安全的。__init__.pyfoobar__init__.py

但以防万一,如果您需要定义一些包级变量,您可以在__init__.py文件内进行,并且包内的所有模块都可以使用它。

事实上,如果您查看PEP 257,它提到__init__.py还可以包含包级别信息的文档。