如果我有以下Python代码:
import module1
import module2
module1
之前加载module2
,并且它们不是,例如,并行加载?这适用于CPython,但我希望代码也可以移植到其他版本,包括允许多线程的代码。搜索Python规范并没有发现任何事情。module1
中的初始化代码必须在module2
之前运行。我不认为替代方案,module1.init()
然后module2.init()
非常pythonic。答案 0 :(得分:10)
module1
的{{1}}之前导入另一个文件非常容易打破此问题。如果您希望module2
在module1
之前运行,那么在module2
顶部显式导入module1
要好得多。答案 1 :(得分:2)
导入将按照他们在代码执行中遇到的顺序进行。但是,这可能与它们在任何特定文件中列出的顺序不同,因为其他模块也可能导入模块。例如,如果你有:
import foo
import bar
import baz
且foo.py
顶部有import baz
,baz
将在bar
之前导入(假设这些模块都没有导入)。
如果module2需要加载module1,最简单的方法是让module2导入module1。这不会重做"如果已导入module1导入(它将仅使用已导入的模块),因此它对性能的影响可以忽略不计。