第一行python循环导入?
问题描述:
比方说,我有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,等等...... 但为什么没有无尽的循环发生?
感谢您的帮助!
答
要回答你的第一个问题:
你得到一个AttributeError
,因为当你运行Y.py
它首先执行import语句这是import X
。然后,在导入X
时,import Y
语句首先在X.py
中执行,因此代码在Y.py
中查找变量a
而不是X.py
。你可以通过在X.py
中注释掉import Y
来测试它,那么它将起作用。
要回答你的第二个问题:
模块被加载只有一次,不管是进口的次数。如果发生多个导入,这可以防止模块执行一遍又一遍地发生。