#file cf.py
a=1
import cf
print(cf.a)
答案 0 :(得分:1)
sys.modules
中创建一个条目。 sys.modules
是一个dict,将模块名称映射到模块代码。同一模块的所有后续导入都在sys.modules
中找到模块的名称,只需从sys.modules
dict中检索模块的代码即可。因此,模块中的代码仅在第一次导入时执行一次。这就是为什么从cf
内导入cf
不会导致错误。cf.py
,并在该窗口中执行了“运行模块”(F5)。精细。然后IDLE在文件中运行代码。这与导入 cf
不同:它直接在cf
中运行代码。运行该代码的一部分是导入cf
,它会打印cf.a
。运行该代码的另一部分是 - 再次! - 打印cf.a
。这就是你看到它两次的原因。顺便说一下,我不知道你的意思是“在控制台中1次”。但是,你再次没有解释你到底做了什么。当我从控制台运行cf.py
时,我看到1
两次,出于同样的原因,我刚刚解释过:
$ python cf.py
1
1