舉例區(qū)分Python中的淺復制與深復制
copy模塊用于對象的拷貝操作。該模塊非常簡單,只提供了兩個主要的方法: copy.copy 與 copy.deepcopy ,分別表示淺復制與深復制。什么是淺復制,什么是深復制,網(wǎng)上有一卡車一卡車的資料,這里不作詳細介紹。復制操作只對復合對象有效。用簡單的例子來分別介紹這兩個方法。
淺復制只復制對象本身,沒有復制該對象所引用的對象。
#coding=gbk import copy l1 = [1, 2, [3, 4]] l2 = copy.copy(l1) print l1 print l2 l2[2][0] = 50 print l1 print l2 #---- 結(jié)果 ---- [1, 2, [3, 4]] [1, 2, [3, 4]] [1, 2, [50, 4]] [1, 2, [50, 4]]
同樣的代碼,使用深復制,結(jié)果就不一樣:
import copy l1 = [1, 2, [3, 4]] l2 = copy.deepcopy(l1) print l1 print l2 l2[2][0] = 50 print l1 print l2 #---- 結(jié)果 ---- [1, 2, [3, 4]] [1, 2, [3, 4]] [1, 2, [3, 4]] [1, 2, [50, 4]]
改變copy的默認行為
在定義類的時候,通過定義__copy__和__deepcopy__方法,可以改變copy的默認行為。下面是一個簡單的例子:
class CopyObj(object):
def __repr__(self):
return "CopyObj"
def __copy__(self):
return "Hello"
obj = CopyObj()
obj1 = copy.copy(obj)
print obj
print obj1
#---- 結(jié)果 ----
CopyObj
Hello
相關文章
python腳本請求數(shù)量達到上限,http請求重試問題
這篇文章主要介紹了python腳本請求數(shù)量達到上限,http請求重試問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Python發(fā)送網(wǎng)絡請求(requests)
這篇文章主要介紹了Python發(fā)送網(wǎng)絡請求(requests),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
教你怎么用python selenium實現(xiàn)自動化測試
今天帶大家學習怎么用python selenium實現(xiàn)自動化測試,文中有非常詳細的介紹及代碼示例,對正在學習python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Python使用matplotlib繪圖無法顯示中文問題的解決方法
這篇文章主要介紹了Python使用matplotlib繪圖無法顯示中文問題的解決方法,結(jié)合具體實例形式分析了Python使用matplotlib繪圖時出現(xiàn)中文亂碼的原因與相關解決方法,需要的朋友可以參考下2018-03-03
Python抓取移動App數(shù)據(jù)使用mitmweb監(jiān)聽請求與響應
這篇文章主要介紹了Python抓取移動App數(shù)據(jù)使用mitmweb監(jiān)聽請求與響應,mitmproxy控制臺方式、mitmdump與Python對接的方式、mitmweb可視化方式,需要的朋友可以參考一下2022-01-01

