python中的深层复制和dict更新

时间:2015-05-19 10:34:06

标签: python python-2.x

我正在尝试获取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

2 个答案:

答案 0 :(得分:1)

dict.update是一个 inplace 操作,如list.sort,它不会返回一个值,它会修改它所调用的原始对象。

如果你实际print b,你会看到None,因为所有未指定返回值的python函数默认都会返回None。因此,您要将b分配给调用update的结果,而None实际上是{{1}}。

答案 1 :(得分:0)

您的更新方法实际上会返回Noneupdate()方法输出参数实际上是您提供的输入字典,它在函数内部变异。