6
我有點好奇爲什麼下面的代碼會產生一個NameError
。exec不會從關閉中提取變量
>>> s = """
... foo = [1,2,3]
... def bar():
... return foo[1]
... """
>>> namespace = {}
>>> exec(s, {'__builtins__': None}, namespace)
>>> print namespace
{'foo': [1, 2, 3], 'bar': <function bar at 0x7f79871bd0c8>}
>>> namespace['bar']()
在正常水平的解釋,我們可以發現在bar.func_globals
foo
或bar.func_closure
如果一個函數。我想我不知道爲什麼namespace['bar']
不把foo
在func_closure
...