Python本地更新无法正常工作

时间:2016-06-02 19:56:46

标签: python python-2.7 python-3.x

为什么以下不是在内部工作但在外面工作?

def foo():
    common = {'abc' : 'xyz'}
    print(locals())
    locals().update(common)
    print(locals(),abc)

foo()

错误:NameError:全局名称' abc'未定义

如果我在函数外运行它,它可以正常工作

common = {'abc' : 'xyz'}
print(locals())
locals().update(common)
print(locals(),abc)

1 个答案:

答案 0 :(得分:1)

根据locals documentation

  

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

所以它不起作用,因为它不打算工作。但是现在回答你的问题,它可以在全球范围内工作,因为修改globals是可能的,globals documentation没有注意到#34;这[...]应该不得修改"。

显然,当你处于全球范围内时,全局就是当地人:

>>> globals() is locals()
True

所以你要修改全局变量,这是允许的。