#file cf.py
a=1
import cf
print(cf.a)
- 为什么在它的模块中导入操作不循环(导入模块本身)?
- 为什么打印指令在 IDLE 中执行 2 次,在控制台执行 1 次?
sys.modules
. sys.modules
是一个字典,将模块名称映射到模块代码。同一模块的所有后续导入都在 中找到模块的名称,并简单地从字典中sys.modules
检索模块的代码。sys.modules
所以模块中的代码只执行一次,第一次被导入。cf
这就是为什么从内部导入不会导致错误的原因cf
。cf.py
在 IDLE 窗口中打开,并在该窗口中执行了“运行模块”(F5)。美好的。然后 IDLE 运行文件中的代码。这与导入 cf
不同:它直接运行代码cf
。运行该代码的一部分是导入cf
,它会打印cf.a
. 运行该代码的另一部分是 - 再次!- 印刷cf.a
。这就是你看到它两次的原因。顺便说一句,我不知道您所说的“在控制台中 1 次”是什么意思。但是,再一次,你没有准确地解释你做了什么。当我cf.py
从控制台运行时,我看到1
了两次,出于同样的原因,我刚刚解释了:
$ python cf.py
1
1