如何从导入模块触发主文件Main.py中的trigger函数?
解决方法
你的代码存在两个核心问题:
- 模块导入顺序导致
trigger函数未定义就被调用:Main.py先导入mymodule,此时mymodule里的mycodehere()会立即执行,但Main里的trigger函数还没定义,直接报错。 - 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
相关产品推荐
相关产品推荐

