为什么在函数中创建/修改locals()的成员不起作用?在
Python 2.5 (release25-maint, Jul 20 2008, 20:47:25)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> # Here's an example of what I expect to be possible in a function:
>>> a = 1
>>> locals()["a"] = 2
>>> print a
2
>>> # ...and here's what actually happens:
>>> def foo():
... b = 3
... locals()["b"] = 4
... print b
...
>>> foo()
3
为什么会这样?它的目的是返回一个表示,而不是用来编辑局部变量。正如documentation警告的那样,它永远不能保证作为这样的工具工作。在
locals()返回名称空间的副本(这与globals()的操作相反)。这意味着对locals()返回的字典执行的任何更改都将无效。在示例4.12签入dive into python。在
相关问题 更多 >
编程相关推荐