Ven*_*rol 4 python closures locals
我找不到这种行为的充分解释.
>>> 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().
如果你没有foo在闭包内分配,Python会将它解析到foo一个级别的范围内(并且直到它找到foo某个地方或抛出异常).
通过提foo内b()的第二个例子,你把foo到当地人中b(),但它解析为foo体内a().如果分配,也就是说,foo = 1在b(),你会看到
{'foo': 0}
{'foo': 1}
Run Code Online (Sandbox Code Playgroud)
作为输出.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |