我知道,我知道..我不应该使用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