Python NameError:在for循环内使用时,“未定义名称'x'”

时间:2019-04-27 03:08:20

标签: python exec

我正在尝试在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内的代码。这只是一个简化的示例。

2 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的python,在v3.7上尝试了相同的命令,并且执行良好

答案 1 :(得分:0)

我可以通过以下方法解决此问题:

globals()['x'] = 2
exec("[l for l in [1,2,3] if l==x]", globals())

但这不是一个好的解决方案。