main.py#main.pyimport mainprint('Hello')输出:HelloHello我相信,当涉及到 lineimport main时,当时已在其中main注册,因此不会执行sys.modules另一个脚本的 import 语句 -我相信它不是其中的一部分。__main__有人可以告诉我我是否理解正确吗?如果不是,请给出解释。
3 回答

大话西游666
TA贡献1817条经验 获得超14个赞
让我们添加一些调试输出:
import sys
print([key for key in sys.modules.keys() if 'main' in key])
import main
它打印:
['__main__']
['__main__', 'main']
这是为什么?
如果您运行一个模块,它不会作为其模块名称添加到sys.modules. 相反,它将永远是__main__。
如果您随后按名称 ( main) 导入模块。该名称不存在,sys.modules因此模块将再次导入,执行其代码并将模块存储在sys.modules其名称下。
执行main.py时会打印['__main__'],重新导入时会打印两个模块名称:['__main__', 'main'].
这暗示了一条规则:尽量不要在代码中的任何地方导入正在运行的模块。
添加回答
举报
0/150
提交
取消