事实证明python __init__.py在3.4中无关紧要?

时间:2016-02-02 11:46:00

标签: python module packages python-3.4

我在同一目录下的main.py文件上运行python 3.4。 / root目录不在python路径中。它只是脚本执行的当前目录。每次测试后都删除了所有pycache文件夹

那么为什么__init__.py确实很重要?我认为有必要如本文所述:

What is __init__.py for?

  

如果删除init.py文件,Python将不再查找该目录中的子模块,因此导入模块的尝试将失败。

现在,在我看来,__init__.py只不过是一个可选构造函数,我们在这里执行内务处理和其他可选操作,例如指定“all”变量等。但不是一个关键项目。

显示测试结果的图片:

enter image description here

这里发生了什么?

2 个答案:

答案 0 :(得分:1)


Answer

essentially we dont need init.py and its purpose is for legacy and optional housekeeping things (2.7 vs 3) you may or may not want to do or need. But at the same time, they have slightly different behavior during more complex parsing which should also be accounted for if you are building something more complex

refer to the following links for more reading material

https://www.python.org/dev/peps/pep-0420/#namespace-packages-today

How do I create a namespace package in Python?

What's the difference between a Python module and a Python package?

https://softwareengineering.stackexchange.com/questions/276888/python-namespace-vs-module-with-underscores

答案 1 :(得分:0)

尽管可能令人困惑,但即使没有 __init__.py 文件也能使用基础知识,但您可能仍然应该使用它们。许多外部工具,以及标准库中与包相关的函数,没有它们将无法按预期工作。这里有更多智慧之言(以及误导性的公认答案):Is __init__.py not required for packages in Python 3.3+