首页 > 解决方案 > 如何理解python中的导入?

问题描述

我有a.pyb.py在同一个目录中。在 a.py 中,代码是

A = 'a1'

from b import B

print(B)

在 b.py 中,代码是

B = 'b1'

from a import A

print(A)

现在运行a.py,结果是

b1
a1
b1

我不明白。有人会解释吗?谢谢!

标签: pythonimport

解决方案


这个问题似乎集中在执行顺序上。这与循环导入相结合。

循环规则在链接的答案中说明,我不同意是重复的:

  1. 如果尚未导入模块,请执行它。
  2. 否则,无论其原始导入是否完成,都直接返回。

现在,执行顺序:

  1. A
  2. Aimport b,它不存在,所以被执行。
  3. Bimports B,它不存在(作为导入)并被执行。
  4. 一个新的A运行。这一次 whenB被导入,它已经存在并返回。幸运的是,我们已经声明了b1. 例如,如果我们在 import 语句之后更改它,事情会变得很奇怪。如果我们在导入后首先声明它,事情就会崩溃。
  5. A完成其运行。
  6. B完成其运行。
  7. 初始的 a 完成了它的运行。

这就是您得到的打印语句的顺序。重要的是要注意这里的执行是完全线性的。


推荐阅读