__init__.py是自编的模块nessecary吗?

时间:2016-03-28 11:30:22

标签: python python-3.x module initialization

我正在创建各种各样的程序,因此我需要许多不同的包和模块。其中一些是我自己写的,有些是下载的。

下载的模块在其主要导演中都有__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文件的优点。这些优势是什么?

1 个答案:

答案 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 模块 导入垃圾邮件