如何将locals()中的值赋给具有相同名称的局部变量?

dan*_*jar 3 python local-variables

这有效:

def foo():
    locals().update({'bar': 12})
    print(locals()['bar'])  # 12
Run Code Online (Sandbox Code Playgroud)

这失败了:

def foo():
    locals().update({'bar': 12})
    bar = locals()['bar']  # KeyError: 'bar'
    print(bar)
Run Code Online (Sandbox Code Playgroud)

小智 5

https://docs.python.org/3/library/functions.html#locals

注意不应修改此词典的内容; 更改可能不会影响解释器使用的本地和自由变量的值.

编辑:但如上所述,bar = 12当然有效:

>>> def foo():
...     bar = 12
...     bar_ = locals()["bar"]
...     print(bar_)
...     
... 
>>> foo()
12
Run Code Online (Sandbox Code Playgroud)