我找不到这种行为的充分解释。
>>> def a():
... foo = 0
... print locals()
... def b():
... print locals()
... b()
>>> a()
{'foo': 0}
{}
但:
>>> def a():
... foo = 0
... print locals()
... def b():
foo
... print locals()
... b()
>>> a()
{'foo': 0}
{'foo': 0}
我知道在第二种情况下有一个闭包,但我找不到关于实际是什么以及在什么条件下应该返回函数的详细描述locals()
。