You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免Python程序在导入时重复执行代码?

解决Python reload模块时顶级代码重复执行的问题

问题原因

  1. 当run.py执行import main时,main.py里所有顶级代码(比如直接写在函数外的print("main1"))会自动执行一次。
  2. 每次调用importlib.reload(main)时,main.py的顶级代码会被重新执行一次,这就导致print("main1")被执行两次(首次import一次,首次reload一次)。
  3. 若把print("main1")放入if __name__ == '__main__':块中,由于main模块被import/reload时,它的__name__是'main'而非'__main__',所以该代码块永远不会触发执行。

解决方案

把需要执行的逻辑封装成函数,由run.py主动调用,避免顶级代码自动执行。

修改后的main.py

def fun():
    print("main2")

def run():
    # 原顶级执行逻辑封装到函数中
    print("main1")

修改后的run.py

import time
import main
import importlib

while True:
    try:
        importlib.reload(main)
        # 主动调用main模块的run函数执行逻辑
        main.run()
        main.fun()
    except Exception as e:
        # 捕获具体异常,便于排查问题
        print(f"错误: {e}")
    time.sleep(1)

额外说明

  • 尽量避免在模块顶级编写可执行代码,将逻辑封装成函数或类,这样import模块时不会自动执行逻辑,只有主动调用才会触发。
  • 不要使用裸except,应捕获具体异常类型,避免隐藏潜在问题。

内容的提问来源于stack exchange,提问作者CL So

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:30:04