我们说我有2个python脚本
第一个:
#X.py
import Y
a = 'list'
print('finish')
和第二个:
#Y.py
import X
z = X.a
print(z)
问题1:
当我首先执行X.py时,代码没有任何问题,但是当我首先执行Y.py时,会出现错误,但为什么会这样?
问题2:
我已经查找了一些循环导入的答案,但我仍然不明白。在这种情况下,从X.py开始,第一行是"导入Y",然后程序应该编译Y.py.Y.py中的第一行是"导入X",所以我想程序再次进入X.py,然后转到Y.py,等等上..... 但为什么没有无限循环发生?
感谢您的帮助!
答案 0 :(得分:1)
回答您的第一个问题:
您收到AttributeError
因为当您运行Y.py
时,它首先执行导入语句import X
。然后,在导入X
时,import Y
语句首先在X.py
中执行,因此代码会在a
而不是{{1}中查找变量Y.py
}}。您可以在X.py
中注释掉import Y
然后它可以正常运行来测试。
回答您的第二个问题:
模块只加载一次,无论导入的次数如何。如果发生多次导入,这可以防止模块执行一次又一次地发生。