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


分享到:


相關文章: