我在读David Beazley & Brian K. Jones 's book "Python Cookbook" (Ed 3)。第35页有一个ChainMap
的例子。我不太理解values
上下跳跃,请看下面我的理解和问题:
>>> values = ChainMap()
>>> values['x'] = 1
我想现在values
是ChainMap({'x': 1})
>>> # Add a new mapping
>>> values = values.new_child()
>>> values['x'] = 2
在这三行的末尾,现在是values
什么?是里面的ChainMap
还是字典?你知道吗
我真的有点迷路了,这里的代码对我来说意味着ChainMap
添加了一个新的子项,这应该是一个新的字典;所以values
变成了一个字典项,由ChainMap
链接;然后values
被分配给新字典。你知道吗
>>> # Add a new mapping
>>> values = values.new_child()
>>> values['x'] = 3
但是现在values' start to call
new\u child()again! Isnt'
new\u child()can only be called by a
ChainMap, not a particular
字典`它链接了吗?你知道吗
这是一本好书,我想每个Python开发人员至少应该阅读第1章和第4章
关于你的问题:
值是
ChainMap
对象,映射了2个字典:令人困惑的是,(突变的)对象本身是从
new_child()
返回的,而不是真正的子对象。你知道吗当然,您可以根据需要多次调用
new_child()
,values
将始终是具有已定义方法new_child()
的ChainMap
对象相关问题 更多 >
编程相关推荐