【发布时间】:2021-05-14 11:38:35
【问题描述】:
我正在编写一个涉及 codegen 的库,我想测试我生成的代码是否符合我的预期。我想生成代码,exec 它,然后验证结果是否符合我的预期。但是,我发现当我在测试函数中执行此操作时,我在生成的代码中设置的变量不可见。例如,这非常有效:
exec('a = 1')
print(a)
但是,这失败了 NameError:
def demo():
exec('b = 2')
print(b)
demo()
什么给了?
【问题讨论】:
-
这能回答你的问题吗? exec() and variable scope & How does exec work with locals?
-
With an explicit globals dict and no explicit locals dict, exec will use the same dict for both globals and locals这听起来很对!
标签: python python-3.x