2017-07-31 10 views

回答

0

每当我从该模块导入任何东西时,是否会运行__init__.py?

据在大多数情况下docs,它是。

+0

你在链接的文档中看到过'__init __。py'会在每个导入中加载吗? –

0

您可以添加要在目录中使用

- core 
    - __init__.py 
在此 __init__.py

添加像

from .curve import Curve 
from .some import SomethingElse 

类和函数引用,并要用户类所有功能只是像

from core import Curve 
0

我有一个名为core的模块,其中包含一些python文件。

如果它包含Python文件,它不是一个模块,它包含了Python文件的目录 - 最终包是否包含__init__.py文件。

如果我这样做:from core.curve import Curve确实__init__.py被叫?

它从来没有“调用” - 它不是一个函数 - 但它在第一次在进程中导入包或它的一个子模块时被加载。然后将其存储在sys.modules中,随后的导入将在那里找到它。

能否将适用于所有核心文件到初始化的.py保存重复自己import语句?

没有。名称空间是每个模块,而不是每个包。无论如何,这将是一个非常糟糕的主意,在维护你的代码时,你的名字是“重复你自己”,在这种情况下,它是一个真正的帮助者(显式导入意味着你不知道哪个符号来自哪个模块)。

应该怎么办init .py?

从技术上讲,你可以在你的__init__.py文件中放入任何你想要的东西,但大多数情况下它们都是空的。一对夫妇已知使用案例是using it as a facade为包的子模块,选择基于目前的平台或一些环境变量等通用API的具体实现...

哦,是的:这也是一个很好的地方添加一些元关于你的软件包(版本,作者等)的信息。

相关问题