我正在尝试使用 eval() 执行许多函数,并且我需要为它们创建某种运行环境。文档中说您可以将全局变量作为第二个参数传递给 eval()。
但这似乎不适用于我的情况。这是简化的示例(我尝试了两种方法,声明变量 global 和使用 globals(),但都不起作用):
文件script.py:
import test
global test_variable
test_variable = 'test_value'
g = globals()
g['test_variable'] = 'test_value'
eval('test.my_func()', g)
文件test.py:
def my_func():
global test_variable
print repr(test_variable)
我得到:
NameError:未定义全局名称“test_variable”。
我应该怎么做才能将其传递test_variable
给my_func()
?假设我不能将它作为参数传递。