我正在创建各种各样的程序,因此我需要许多不同的包和模块。其中一些是我自己写的,有些是下载的。
下载的模块在其主要导演中都有__init__.py
个文件,并且在子导演中随机存在。这是一个例子:
/theexamplemodule
|-__init__.py #first
|-file1.py
|-file2.py
|-folder1
| |-__init__.py #second
| |-file3.py
|-folder2
| |-data.txt
| |-file4.py
我在stackverflow上搜索过,我发现这个'What is __init__.py for?'回答为什么第一个在那里,它将directorys设置为模块或类似的东西......
但为什么这个宣言是无关紧要的,其他的是什么呢?
我自己的模块构建类似于此但没有__init__.py
文件。我没有得到__init__.py
文件的优点。这些优势是什么?
答案 0 :(得分:3)
“ init .py文件是使Python将目录视为包含包所必需的;这样做是为了防止具有通用名称的目录(如string)无意中隐藏发生的有效模块稍后(深入)模块搜索路径。在最简单的情况下, init .py可以只是一个空文件,但它也可以执行包的初始化代码或设置 all < / strong>变量,稍后描述。“
名为 init .py的文件用于将磁盘上的目录标记为Python包目录。如果你有文件
mydir/spam/__init__.py
mydir/spam/module.py
并且mydir在您的路径上,您可以将module.py中的代码导入为:
导入spam.module 或
来自垃圾邮件导入模块 如果删除 init .py文件,Python将不再查找该目录中的子模块,因此导入模块的尝试将失败。
init .py文件通常为空,但可以用更方便的名称导出包的选定部分,保存便利功能等。鉴于上面的示例,内容为可以访问 init 模块 导入垃圾邮件