在阅读的文档时dict.copy()
,它说它制作了该词典的浅表副本。我关注的书(Beazley的Python参考)也是如此,该书说:
m.copy()方法对映射对象中包含的项目进行浅表复制,并将其放置在新的映射对象中。
考虑一下:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
因此,我认为这也将更新original
(并添加'c':3)的值,因为我正在执行浅表复制。就像您对列表进行操作一样:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
这按预期工作。
由于两者都是浅表副本,为什么为什么dict.copy()
按我的预期无法正常工作?还是我对浅复制和深复制的理解存在缺陷?