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

如何从导入模块触发主文件Main.py中的trigger函数?

解决方法

你的代码存在两个核心问题:

  1. 模块导入顺序导致trigger函数未定义就被调用:Main.py先导入mymodule,此时mymodule里的mycodehere()会立即执行,但Main里的trigger函数还没定义,直接报错。
  2. mymodule无法直接访问Main.py里的trigger函数:不同模块有独立的命名空间,mymodule不能直接调用Main里的函数,需要通过回调传递。

具体修改如下:

修改mymodule.py

让mycodehere函数接受一个回调参数,不再直接调用未定义的trigger,也不在模块导入时自动执行函数:

from time import sleep

def mycodehere(callback):
    sleep(5)  # 可改成短时间方便测试原逻辑
    callback()  # 调用传入的回调函数

修改Main.py

调整代码顺序,先完成name输入和trigger函数定义,再导入mymodule并传递trigger作为回调:

name = input('Your name: ')

def trigger():
    print(name)

import mymodule
# 调用mymodule的函数,将trigger作为参数传入
mymodule.mycodehere(trigger)

这样运行Main.py时,会先让你输入名字,然后等待5秒(原代码的555秒太长,建议改成短时间测试),最后自动调用trigger函数打印输入的名字,实现你要的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:31:06