在模块中导入一个模块

2024-04-23 15:01:07 发布

您现在位置:Python中文网/ 问答频道 /正文

#file cf.py
a=1      
import cf
print(cf.a)
  1. 为什么it模块中的导入操作不按周期进行(导入模块本身)?你知道吗
  2. 为什么打印指令在空闲时执行2次,在控制台执行1次?你知道吗

Tags: 模块pyimport指令it空闲cffile
1条回答
网友
1楼 · 发布于 2024-04-23 15:01:07
  1. 第一次导入模块时,会在sys.modules中为其创建一个条目。sys.modules是一个dict,将模块名映射到模块代码。同一模块的所有后续导入都会在sys.modules中找到该模块的名称,只需从sys.modulesdict中检索该模块的代码即可。因此,模块中的代码在第一次导入时只执行一次。这就是为什么从cf内导入cf不会产生错误的原因。你知道吗
  2. 你没有准确地解释你用IDLE做了什么。我猜:您在空闲窗口中打开了cf.py,并在该窗口中运行了模块(F5)。好的。然后IDLE运行文件中的代码。这与导入不同:它直接在cf中运行代码。运行该代码的一部分是导入cf,它打印cf.a。运行代码的另一部分是-再次!-打印cf.a。所以你才看了两遍。你知道吗

顺便说一句,我不知道你说的“和在控制台1次”是什么意思。但是,你又没有解释清楚你做了什么。当我从控制台运行cf.py时,我看到1两次,出于同样的原因,我刚才解释了:

$ python cf.py
1
1

相关问题 更多 >