Python 的 copy 模塊用來複制對象,支持淺複製和深複製(shallow or deep copy)。
淺複製的方法是 copy(),深複製的方法是 deepcopy()。
淺複製 copy
例如要複製一個對象列表,淺複製就是重新構造一個列表,但是列表中的對象還指向之前的對象。
執行:
使用淺複製,A 實例並沒有重新創建,還是之前的引用。
深複製 deepcopy
深複製不僅複製列表對象,還複製列表中所有的元素。下面使用 deepcopy()方法替換 copy() 方法。
執行:
因為使用了 functools.total_ordering 裝飾類,等於比較符還是相等的,使用了深複製,唯一比較返回的結果就是 False 了。
自定義複製的行為
對象定義特殊的方法,__copy__() 和 __deepcopy__() 可以控制複製的行為。
- copy() 方法不接收參數, 返回對象的淺複製。
- deepcopy() 方法接收一個字典參數 memo ,返回對象的深複製。
執行:
閱讀更多 趣喜歡編程 的文章