Is __init__.py run everytime I import anything from that module?
我有一个叫做
如果我这样做:
1 | from core.curve import Curve |
是否有人打电话给
I've got a module called core, which contains a number of python files.
如果它包含python文件,那么它不是一个模块,而是一个包含python文件的目录,如果它包含
If I do:
from core.curve import Curve does__init__.py get called?
它从未被"调用"——它不是一个函数——但是当包或它的某个子模块在一个进程中第一次被导入时,它就被加载了。然后储存在
Can I move import statements that apply to all core files into init.py to save repeating myself?
不。名称空间是每个模块,而不是每个包。无论如何,这将是一个非常糟糕的主意,在这种情况下,你所说的"重复你自己"在维护你的代码时是一个真正的帮助者(明确的导入意味着你不含糊地知道哪个符号来自哪个模块)。
What should go into init.py?
从技术上讲,你可以把你想要的任何东西放在你的
哦,是的:这也是一个添加关于您的包(版本、作者等)的元信息的好地方。
您可以添加所有要在目录中使用的函数
1 2 | - core - __init__.py |
在此
1 2 | from .curve import Curve from .some import SomethingElse |
你想在哪里使用你的类,就像这样
1 | from core import Curve |
Is __init__.py run everytime I import anything from that module?
根据文件,在大多数情况下是的。