在函数Python 3中使用exec()

时间:2015-01-21 22:35:00

标签: python function python-3.x exec

我知道,我知道..我不应该使用exec()内置函数,这不是一个好习惯。但是,我需要使用它有充分的理由(你可以在这里找到原因:List to String to List Python 3。你可以在那里建议一个更好的主意)。所以,问题如下:

def function():
    exec("l = [1, 2, 3]")
    for i in l:
        print(i)

function()

抬起:

  

回溯(最近一次呼叫最后一次):文件"",第1行,in          function()文件"",第3行,在函数中       for i in l:NameError:name' l'未定义

请注意,这是一个简化版本,在这个例子中,使用exec()似乎是不必要的,但在实际情况下它不是。有任何想法吗?谢谢!

修改

答案可以在Behavior of exec function in Python 2 and Python 3

中找到并得到很好的讨论

问题的工作代码如下:

def function():
    d = locals()
    exec("l = [1, 2, 3]", globals(), d)
    for i in d['l']:
        print(i)

function()

感谢@Martijn Pieters

0 个答案:

没有答案