我正在尝试在Python 3.7中运行以下文件:
文件名:mytest.py 内容:
def test():
exec("x=2")
exec("if x==2: print('yes')")
exec("[l for l in [1,2,3] if l==x]")
if __name__ == "__main__":
test()
当我运行命令时:
python3 mytest.py
test()的前两行工作正常。但是第三行给出了以下错误:
NameError:未定义名称'x'
如果我直接在Python Shell中运行test()的内容或将test()的内容放入 main 内,则不会发生错误。
请注意,在我的实际代码中,我事先不知道变量名l和x或需要在exec内的代码。这只是一个简化的示例。
答案 0 :(得分:0)
您使用的是哪个版本的python,在v3.7上尝试了相同的命令,并且执行良好
答案 1 :(得分:0)
我可以通过以下方法解决此问题:
globals()['x'] = 2
exec("[l for l in [1,2,3] if l==x]", globals())
但这不是一个好的解决方案。