Python 模块 Copy

Python 模块 Copy

Python 的 copy 模块用来复制对象,支持浅复制和深复制(shallow or deep copy)。

浅复制的方法是 copy(),深复制的方法是 deepcopy()。

浅复制 copy


例如要复制一个对象列表,浅复制就是重新构造一个列表,但是列表中的对象还指向之前的对象。

Python 模块 Copy

执行:

Python 模块 Copy

使用浅复制,A 实例并没有重新创建,还是之前的引用。

深复制 deepcopy


深复制不仅复制列表对象,还复制列表中所有的元素。下面使用 deepcopy()方法替换 copy() 方法。

Python 模块 Copy

执行:

Python 模块 Copy

因为使用了 functools.total_ordering 装饰类,等于比较符还是相等的,使用了深复制,唯一比较返回的结果就是 False 了。

自定义复制的行为


对象定义特殊的方法,__copy__() 和 __deepcopy__() 可以控制复制的行为。

  • copy() 方法不接收参数, 返回对象的浅复制。
  • deepcopy() 方法接收一个字典参数 memo ,返回对象的深复制。
Python 模块 Copy

执行:

Python 模块 Copy


分享到:


相關文章: