Python 的 copy 模块用来复制对象,支持浅复制和深复制(shallow or deep copy)。
浅复制的方法是 copy(),深复制的方法是 deepcopy()。
浅复制 copy
例如要复制一个对象列表,浅复制就是重新构造一个列表,但是列表中的对象还指向之前的对象。
执行:
使用浅复制,A 实例并没有重新创建,还是之前的引用。
深复制 deepcopy
深复制不仅复制列表对象,还复制列表中所有的元素。下面使用 deepcopy()方法替换 copy() 方法。
执行:
因为使用了 functools.total_ordering 装饰类,等于比较符还是相等的,使用了深复制,唯一比较返回的结果就是 False 了。
自定义复制的行为
对象定义特殊的方法,__copy__() 和 __deepcopy__() 可以控制复制的行为。
- copy() 方法不接收参数, 返回对象的浅复制。
- deepcopy() 方法接收一个字典参数 memo ,返回对象的深复制。
执行:
閱讀更多 趣喜歡編程 的文章