python需要包__init__.py的原因是什么?

Dir*_*unn 3 python module init package

我知道python需要该__ init __.py文件才能将目录识别为python包,这样我们就可以将子模块导入到我们的程序中.我可以看到类的相似性以及如何使用init来执行必要的代码.

但是,在python文档中,这一行让我困惑,

这样做是为了防止具有通用名称的目录(例如字符串)无意中隐藏稍后在模块搜索路径上发生的有效模块.

如下所示https://docs.python.org/2/tutorial/modules.html#packages

有人可以澄清一下吗?

mpo*_*nik 5

文档非常明确 - 您的项目结构可能如下所示:

app
 - common
  - init.py
 - resources
 - string
 - src
Run Code Online (Sandbox Code Playgroud)

如果Python隐式将目录视为包,则"string"目录可能会与Python的内置字符串模块(https://docs.python.org/2/library/string.html)进行名称冲突.这意味着在调用时import string,模块是不明确的.

__init__.py 还添加了一些功能:初始化包时执行的代码,因此可用于执行某种类型的包设置.