3

我一直在使用字典对象加载变量,但值得到了更新。我在这里想念什么?

assert "run_LMM" in all_variables.keys()
locals().update(all_variables)
assert "run_LMM" in locals()

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

4

1 回答 1

10

这是文档的预期行为:

不得修改本词典的内容;更改可能不会影响解释器使用的局部变量和自由变量的值。

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

def func():
    locals()['val'] = 1
    print val

最后一条语句总是从全局变量中读取,因为没有声明局部变量。因此,动态添加本地人的能力会让生活变得更加困难。

于 2014-06-13T04:33:52.467 回答