一、什么是循环导入?
![a85c31e53dd8d479991f8ab4c0c320f1.png](https://i-blog.csdnimg.cn/blog_migrate/150a2a86eda9e6d8a074bc4ce38f0e29.jpeg)
# m1.pyprint('from m1.py')from m2 import xy = 'm1'
- 创建m2的名称空间
- 执行m2.py,将执行产生的名字丢到m2.py
- 在当前执行文件中拿到m2.x
# m2.pyprint('from m2.py')from m1 import yx = 'm2'
- 创建m1的名称空间
- 执行m1.py,将执行产生的名字丢到m1.py
- 在当前执行文件中拿到m1.y
# run.pyimport m1
- 创建m1的名称空间
- 执行m1.py,将执行产生的名字丢到m1.py
- 在当前执行文件中拿到m1
- 如果运行run.py,则会报错ImportError: cannot import name 'y'
- 如果运行m1.py,则会报错ImportError: cannot import name 'x'
- 如果运行m2.py,则会报错ImportError: cannot import name 'y'
二、解决方案
我们可以