m1、m2为被导入模块,run1为执行文件。
m1.py
print('正在执行m1.py') from m2 import x y = 'm1'
m2.py
print('正在执行m2.py') from m1 import y x = 'm2'
run1.py
# 模块的循环导入问题 import m1
运行结果:
不管是import。。。 还是from。。。import。。。,它们只在首次导入模块时,才会执行文件代码。
run1在导入m1的时候是首次导入:
1、造一个m1的名称空间,
2、开始执行m1.py,首次导m2,造一个m2的名称空间,运行m2.py里面的代码
3、问m2名称空间里面要一个x的名字