0

比方说,我有2个python脚本第一行python循环导入?

第一个:

#X.py 
import Y 
a = 'list' 
print('finish') 

,第二个:

#Y.py 
import X 
z = X.a 
print(z) 

问题1:

当我第一次执行X.py ,代码没有问题,但是当我首先执行Y.py时,会出现错误,但是为什么?

问题2:

我抬头为圆形进口一些答案,但我还是不understand.In这种情况下,从X.py开始,第一行是“进口Y”,然后该程序应该去编译Y.py.Y.py的第一行是“import X”,所以我猜程序再次转到X.py,然后转到Y.py,等等...... 但为什么没有无尽的循环发生?

感谢您的帮助!

回答

1

要回答你的第一个问题:

你得到一个AttributeError,因为当你运行Y.py它首先执行import语句这是import X。然后,在导入X时,import Y语句首先在X.py中执行,因此代码在Y.py中查找变量a而不是X.py。你可以通过在X.py中注释掉import Y来测试它,那么它将起作用。

要回答你的第二个问题:

模块被加载只有一次,不管是进口的次数。如果发生多个导入,这可以防止模块执行一遍又一遍地发生。