我有一个包含多个函数定义的模块对象。这是一个简化的例子。
源代码(组成模块“my_module”)
def functionA():
print("hello")
def functionB():
functionA()
print("world")
该模块是用 imp 构建的(我知道它已被贬值,但我的应用程序仍在 python 3.5 上)
ast_node = parse(source)
byte_code = compile(ast_node, 'my_module', 'exec')
my_module = imp.new_module('my_module')
exec(byte_code, __builtins__, my_module.__dict__)
我正在尝试functionB()
使用exec
完整模块__dict__
并将其作为本地字典传递。(我也尝试将它作为全局字典传递,但没有任何运气)
exec("functionB()", None, my_module.__dict__)
我看到的错误是NameError: name 'functionA' is not defined
是否可以将本地(甚至全局)范围扩展到执行功能?