浅复制在顶级容器中复制可变对象。深层复制会创建数据结构中所有可变容器的新实例。
“e.g. 2”结果为 10,因为您在外部复制了字典,但内部的两个列表仍然是旧列表,并且列表可以就地更改(它们是可变的)。
深度复制运行 aList.copy()、bList.copy() 并用它们的副本替换字典中的值。
例如1 解释:
kvps = {'1': 1, '2': 2}
theCopy = kvps.copy()
# the above is equivalent to:
kvps = {'1': 1, '2': 2}
theCopy = {'1': 1, '2': 2}
当您将其应用于例如2:
kvps = {'1': aList, '2': bList}
theCopy = {'1': aList, '2': bList}
两个字典中的列表对象是相同的对象,因此修改其中一个列表将反映在两个字典中。
进行深层复制(例如 3)会产生以下结果:
kvps = {'1': aList, '2': bList}
theCopy = {'1': [1, 2], '2': [3, 4]}
这意味着两个字典具有完全不同的内容,修改一个字典不会修改另一个。
例如4 通过dict()
相当于浅拷贝。