两个模块间互相导入时,可能会出现如下的问题:
# a.py
from b import y
print y
x = 5
# b.py
from a import x
print x
y = 10
>>> import b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "b.py", line 1, in <module>
from a import x
File "a.py", line 1, in <module>
from b import y
ImportError: cannot import name y
>>>
因为在 b 中, from a import x 此时的 x 还不存在。
有三种办法可以解决这个问题:
模块间不要互相导入
使用 import
# a.py import b x = 5 # print b.y 不能立即访问 b 内的变量 # b.py import a y = 10 # print a.x 不能立即访问 a 内的变量
在函数中执行导入操作
# a.py def abc(): from b import y print y x = 5 abc() # b.py def efg(): from a import x print x y = 10 efg()
在文件末尾执行导入操作
# a.py x = 5 from b import y print y # b.py y = 10 from a import x print x
Comments