本问题已经有最佳答案,请猛点这里访问。
我有一个叫做core的模块,它包含许多python文件。
如果我这样做:
from core.curve import Curve
是否有人打电话给__init__.py?我可以将适用于所有核心文件的导入语句移到__init__.py中以保存重复的内容吗?__init__.py中应该包含什么?
I've got a module called core, which contains a number of python files.
如果它包含python文件,那么它不是一个模块,而是一个包含python文件的目录,如果它包含__init__.py文件,那么它最终是一个包。
If I do: from core.curve import Curve does __init__.py get called?
它从未被"调用"——它不是一个函数——但是当包或它的某个子模块在一个进程中第一次被导入时,它就被加载了。然后储存在sys.modules中,随后的进口产品会在那里找到它。
Can I move import statements that apply to all core files into init.py to save repeating myself?
不。名称空间是每个模块,而不是每个包。无论如何,这将是一个非常糟糕的主意,在这种情况下,你所说的"重复你自己"在维护你的代码时是一个真正的帮助者(明确的导入意味着你不含糊地知道哪个符号来自哪个模块)。
What should go into init.py?
从技术上讲,你可以把你想要的任何东西放在你的__in