为什么以下不是在内部工作但在外面工作?
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)
答案 0 :(得分:1)
注意不应修改此词典的内容;更改可能不会影响解释器使用的本地和自由变量的值。
所以它不起作用,因为它不打算工作。但是现在回答你的问题,它可以在全球范围内工作,因为修改globals
是可能的,globals documentation没有注意到#34;这[...]应该不得修改"。
显然,当你处于全球范围内时,全局就是当地人:
>>> globals() is locals()
True
所以你要修改全局变量,这是允许的。