模块的循环导入问题

梦想与她 提交于 2019-11-27 10:41:49

一、什么是循环导入

两个模块互相导入,就形成了导入循环,比如下面的这种情况

print(x)
from m2 import x
y = 20
m1.py
print(y)
from m1 import y
x = 1
m2.py

如果运行m1.py,则会产生`ImportError: cannot import name 'y`

如果运行m2.py,则会产生`ImportError: cannot import name 'x`

所以根本原因是:在导入的时候,m1需要访问m2的变量y,但是y没有初始化完成
所以解决方法有两个:

二、解决方案

y初始化完成后,才让m1.py访问m2.py的变量

方案一

1 print(x)
2 
3 def func1():
4     from m2 import x
5     print(x)
6 
7 y =20
m1.py
1 print(y)
2 
3 def func1():
4     from m1 import y
5     print(y)
6 
7 x = 1
m2.py

方案一

1 print(x)
2 
3 y = 20
4 from m2 import x
m1.py
1 print(y)
2 
3  x = 1
4  from m1 import y
m2.py

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!