copy---复制对象

作用:提供一些函数,可以使用浅副本或深副本语义复制对象

1.浅副本

  copy()创建的浅副本(shallow  copy)是一个形容器,其中填充原对象内容的引用,建立list对象的一个浅副本时,会构造一个新的list.并将原对象的元素追加到这个list。

 1.深副本

  deepcopy()创建的深副本是一个新容器,其中填充原对象内容的副本。要建立一个list的副本,会构造一个新的list,复制原列表的元素,然后将这些副本追加到新列表。

3.定制复制行为

  可以使用特殊方法__copy__()和__deepcopy__()来控制如何建立副本。

调用__copy__()而不提供任何参数,这会返回对象的一个浅副本。

调用__deepcopy__(),并提供一个呗望指点,这会返回对象的一个生副本。所有需要深复制的成员属性都要连同诶网字典传递到copy.deepcopy()来控制递归。

4.深副本中的递归

  为了避免复制递归数据结构可能带来的问题,deepcopy()使用了一个字典来跟中已经复制的对象。将这个字典传入__deepcopy__()方法,从而在该方法中也可以进行检查。

 

posted @ 2020-03-26 17:51  King~~~  阅读(234)  评论(0编辑  收藏  举报