Python:为什么不能使用locals()修改函数中的当前作用域?

2024-09-30 00:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么在函数中创建/修改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

Tags: 函数fooontype成员debianwhatjul
2条回答

为什么会这样?它的目的是返回一个表示,而不是用来编辑局部变量。正如documentation警告的那样,它永远不能保证作为这样的工具工作。在

locals()返回名称空间的副本(这与globals()的操作相反)。这意味着对locals()返回的字典执行的任何更改都将无效。在示例4.12签入dive into python。在

相关问题 更多 >

    热门问题