【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别
生活随笔
收集整理的這篇文章主要介紹了
【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 中賦值語句不復制對象,而是在目標和對象之間創建綁定關系。對于自身可變或者包含可變項的集合對象,開發者有時會需要生成其副本用于改變操作,進而避免改變原對象。copy 模塊提供了通用的淺層復制 copy() 和深層復制 deepcopy() 操作。
-
copy() 僅復制對象本身,而不對其中的子對象進行復制,如果對原子對象進行修改,那么淺層復制之后的對象也會隨著修改。
-
deepcopy() 是真正意義上的復制,即重新開辟一片空間,經常說的復制實際上就是 deepcopy,深層復制之后的對象不受原對象的影響,無論原對象發生什么修改,深層復制的對象都不會發生改變。
以上兩個列表 list2 和 list3 分別經過了淺層復制和深層復制,雖然值是一樣的,但是本質上并不是同一個列表
>>> import copy >>> list1 = [1, 2, [3, 4], 5] >>> list2 = copy.copy(list1) >>> list3 = copy.deepcopy(list1) >>> list1[2][0] = 3333 >>> list1 [1, 2, [3333, 4], 5] >>> list2 [1, 2, [3333, 4], 5] >>> list3 [1, 2, [3, 4], 5]將原列表的子對象 [3, 4] 改成 [333, 4],可以看到淺層復制后 list2 的值也會改變,而深層復制后 list3 的值并不會改變。
簡單來說:
- 淺層復制 copy():復制父對象,子對象仍然使用引用的方式;
- 深層復制 deepcopy():復制了對象和對象的所有子對象。
總結
以上是生活随笔為你收集整理的【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国债收益率大涨,3年期以下的全面超银行存
- 下一篇: 招商银行信用卡现金分期可以提前还款吗 现