一、 循环导入
模拟一个场景
# m1.py
# print('正在导入m1')
#
# x = 'm1'
# from m2 import y
1、创建m2的名称空间
2、执行m2.py,将执行产生的名字丢到m2.py
3、在当前执行文件中拿到m2.y
# m2.py
# print('正在导入m2')
# y = 'm2'
#
# from m1 import x
1、创建m1的名称空间
2、执行m1.py,将执行产生的名字丢到m1.py
3、在当前执行文件中拿到m1.x
# 循环导入.py
import m1
1、创建m1的名称空间
2,执行m1.py,将产生的名字丢到m1.py
3、在当前执行文件中拿到m1
运行循环导入.py,则报错ImportError:cannot import name ‘x’ from
运行m1.py,则报错ImportError: cannotimport name ‘y’
运行m2.py,则报错
ImportError: cannot import name ‘x’
解决方案
我么可以使用函数定义阶段只识别语法的特性解决循环导入的问题,我们也可以从本质上解决循环导入的问题,但是最好的解决方法是不要出现循环导入。
方案一:循环导入的名字提前放,导入语句往后放
# m1.py