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