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
...