所以我尝试对dict进行深度复制,并用一些额外的数据更新它(我不想改变我的原始字典):
>>> a = {1:1}
>>> print(a)
{1: 1}
>>> b = copy.deepcopy(a).update({2:2})
>>> print(b)
None
但是当我以另一种方式做到这一点时,它起作用:
>>> a = {1:1}
>>> b = copy.deepcopy(a)
>>> b.update({2:2})
>>> print(b)
{1: 1, 2: 2}
为什么当我在同一行上更新时,Python会将b
变量设置为None
?
我也尝试对原始字典进行深度复制:
>>> a = {1:1}
>>> a = copy.deepcopy(a).update({2:2})
>>> print(a)
None
可是:
>>> a = {1:1}
>>> a = copy.deepcopy(a)
>>> a
{1: 1}
这是dict.update
问题吗?或者也许是它的CPython相关行为?
答案 0 :(得分:1)
dict.update
更新了您的字典,它不会返回它,因此b
不是您认为的。