How to understand import in python?
我把a.py和b.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,结果是
我不明白。有人能解释一下吗?谢谢!
这个问题似乎集中在执行顺序上。这与循环导入结合在一起。
循环规则在链接答案中说明,我不同意这是一个副本:
如果模块尚未导入,请执行它。
否则,只需返回它,不管它的原始导入是否完成。
现在,执行顺序:
运行A。
A进口b,不存在,执行。
b进口b,不存在(作为进口)并已执行。
新的A运行。不过,这次当b进口时,它已经存在并返回。幸运的是,我们已经宣布了b1。例如,如果我们在import语句之后更改它,事情会变得很奇怪。如果我们在进口后先申报的话,事情就坏了。
A完成运行。
b完成运行。
初始A完成其运行。
这是您得到的打印语句的顺序。需要注意的是,这里的执行是完全线性的。
- 所以,这个问题没有单一的解决方案?我想每种语言都会遇到这个问题。只是好奇:—)
- @Nishant好吧,如果你什么都不做,你就会陷入一个导入循环,所以作为一个语言设计师,你要么以某种方式打破这个循环,要么完全不允许它。从一个完全理论的角度来看,让这一切永远运行可能是"正确的"。