我正在尝试获取dict的深层复制并在Python 2.6中更新结果。以下代码效果很好:
>>> a = {1:2}
>>> b = copy.deepcopy(a)
>>> b.update({3:4})
>>> b
{1: 2, 3: 4}
而以下代码不起作用
>>> a={1:2}
>>> b = copy.deepcopy(a).update({3:4})
>>> b
>>>
为什么第二个代码段会提供None
?
答案 0 :(得分:1)
dict.update
是一个 inplace 操作,如list.sort
,它不会返回一个值,它会修改它所调用的原始对象。
如果你实际print b
,你会看到None
,因为所有未指定返回值的python函数默认都会返回None。因此,您要将b
分配给调用update
的结果,而None
实际上是{{1}}。
答案 1 :(得分:0)
您的更新方法实际上会返回None
。 update()
方法输出参数实际上是您提供的输入字典,它在函数内部变异。