locals().update(dictionary) 没有添加所有变量
我一直在用字典对象来加载变量,但这些值会被更新。我这里缺少了什么呢?
assert "run_LMM" in all_variables.keys()
locals().update(all_variables)
assert "run_LMM" in locals()
最后一行是我遇到断言错误的地方。发生了什么事呢?
1 个回答
10
这是预期的行为,按照文档的说法:
这个字典的内容不应该被修改;因为修改可能不会影响解释器使用的局部和自由变量的值。
我认为,这其中一个原因是,变量是全局的还是局部的,在函数编译时就已经确定了。所以在:
def func():
locals()['val'] = 1
print val
最后的语句总是从全局变量中读取,因为局部变量并没有被声明。因此,动态添加局部变量会让事情变得更加复杂。