我正在尝试创建一个自定义python解释器类型的应用程序。我使用exec语句(在Python 2.7.6中)来执行给定的代码,但全局变量没有按预期的那样工作。可能有人解释为什么这不起作用:在Python中使用全局变量exec
def print_x():
print(x)
g = {'x': 10, 'print_x': print_x}
l = {}
exec('print_x()', g, l)
的结果(print_x功能是否g或L),是一个错误:
NameError: global name 'x' is not defined
所以,不要对全局传递给exec不继承到所谓的功能?
所以exec不知道如何解析你的字典g – dmitryro
但我可以使用exec('print(x)',g,l)就好了。它不适用于print_x函数。 – jordanwh
http://stackoverflow.com/questions/2904274/globals-and-locals-in-python-exec - 与你的情况类似 – dmitryro