让我们添加一些调试输出:import sysprint([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'].这暗示了一条规则:尽量不要在代码中的任何地方导入正在运行的模块。