import:: import copy doc:: copy


  • copy.copy(): 浅副本 (浅层复制)
  • copy.deepcopy(): 深副本 (深层复制)

浅层与深层复制的区别仅与复合对象(即包含列表或类的实例等其他对象的对象)相关:

  • 浅层复制构造一个新的复合对象,然后(在尽可能的范围内)将原始对象中找到的对象的引用插入其中。
  • 深层复制构造一个新的复合对象,然后,递归地将在原始对象里找到的对象的副本插入其中。

深度复制操作通常存在两个问题, 而浅层复制操作并不存在这些问题:

  • 递归对象 (直接或间接包含对自身引用的复合对象) 可能会导致递归循环。
  • 由于深层复制会复制所有内容,因此可能会过多复制(例如本应该在副本之间共享的数据)。