如何理解python中的导入?

How to understand import in python?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
A = 'a1'

from b import B

print(B)

在B.py中,代码是

1
2
3
4
5
B = 'b1'

from a import A

print(A)

现在运行a.py,结果是

1
2
3
b1
a1
b1

我不明白。有人能解释一下吗?谢谢!


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

循环规则在链接答案中说明,我不同意这是一个副本:

  • 如果模块尚未导入,请执行它。
  • 否则,只需返回它,不管它的原始导入是否完成。
  • 现在,执行顺序:

  • 运行A
  • A进口b,不存在,执行。
  • b进口b,不存在(作为进口)并已执行。
  • 新的A运行。不过,这次当b进口时,它已经存在并返回。幸运的是,我们已经宣布了b1。例如,如果我们在import语句之后更改它,事情会变得很奇怪。如果我们在进口后先申报的话,事情就坏了。
  • A完成运行。
  • b完成运行。
  • 初始A完成其运行。
  • 这是您得到的打印语句的顺序。需要注意的是,这里的执行是完全线性的。