Python的deepcopy与upd的奇怪行为

2024-06-17 08:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试制作dict的一个深度副本,并用一些额外的数据更新它(我不想更改我原来的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相关的行为?你知道吗


Tags: 数据none方式副本updatecpythondict行上