如何使回调函数可用于Python中的导入模块?

问题描述

我的问题很简单,我希望解决方案也是如此。

在我的python应用程序中,我想选择一个脚本文件并运行它。

objcode = compile(open(self.filename).read(),os.path.basename(self.filename),"exec")
exec(objcode)

我希望脚本能够通过我作为字典传入的函数与我的主应用程序进行交互。这是几个功能。顺便说一句,Print是一个lamda函数,它允许我传递参数并调用打印到控制台的函数。

dict = {
    "check_halt":   self.parent.check_PyScript_halt,# Function to check if halt was pressed
    "print":        Print,# Function that will print to command console
}
exec(objcode,dict)

这很好用,我执行的脚本可以调用check_halt()和print(),因为它们位于我脚本的全局变量中。 但是,如果我的脚本导入了我编写的实用程序功能模块,则该实用程序功能将无法像我希望的那样访问这些回调函数。

我可以将实用程序功能定义放入脚本文件中,然后它们可以访问模块全局变量,但我不想在我编写的每个脚本文件中都复制它们。

是否有一个优雅的解决方案?我什至考虑过将它们添加到内置函数中,但是我不喜欢那样,并且不确定它是否能正常工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)