locals().update(字典)不会添加所有变量

Ste*_*nik 3 python locals

我一直在使用字典对象加载变量,但值会更新.我在这里错过了什么?

assert "run_LMM" in all_variables.keys()
locals().update(all_variables)
assert "run_LMM" in locals()
Run Code Online (Sandbox Code Playgroud)

最后一行是我得到一个断言错误.这是怎么回事?

ber*_*eal 9

这是文档的预期行为:

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

我认为,其中一个原因是在函数编译期间是否定义了变量是全局变量还是局部变量,因此在:

def func():
    locals()['val'] = 1
    print val
Run Code Online (Sandbox Code Playgroud)

最后一个语句总是从全局变量中读取,因为未声明局部变量.因此,动态添加本地化的能力将使生活更加艰难.