下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Python深拷貝與淺拷貝引用目錄(1)、存在父對象和子對象(2)、如果只存在父對象前言:
在Python中,對象賦值在本質上是對對象的引用,當創(chuàng)建一個對象把它賦值給另一個變量的時候,Python并沒有拷貝這個對象,而只是拷貝了這個對象的引用,這里通過程序,借用Python中的copy模塊進一步理解深拷貝、淺拷貝和對象賦值有什么不同。
這里分兩種情況:
(1)、存在父對象和子對象
演示代碼如下:
importcopy
#調用copy模塊
Dict={'animal':'cat','num':[10,20,30],'color':'pink'}#創(chuàng)建新字典
Dict1_copy=Dict.copy()
#淺拷貝
Dict1_dcopy=copy.deepcopy(Dict)
#深拷貝
Dict2=Dict
#直接賦值對象為淺拷貝
Dict['num'][1]=66
#修改創(chuàng)建字典的內部值
print('Dict:'+str(Dict))
#輸出修改后的字典數(shù)據
print('Dict1_copy:'+str(Dict1_copy))
#輸出淺拷貝數(shù)據,數(shù)據被修改
print('Dict1_dcopy:'+str(Dict1_dcopy))
#輸出深拷貝的數(shù)據,數(shù)據未被修改
print('Dict2:'+str(Dict2))
#對象賦值,數(shù)據被修改
運行結果如下:
(2)、如果只存在父對象
演示代碼如下:
importcopy
#調用copy模塊
Dict={'animal':'cat','num':'10','color':'pink'}#創(chuàng)建新字典
Dict1_copy=Dict.copy()
#淺拷貝
Dict1_dcopy=copy.deepcopy(Dict)
#深拷貝
Dict2=Dict
#淺拷貝,直接賦值對象
Dict['animal']='dog'
#修改創(chuàng)建字典的內部值
print('Dict:'+str(Dict))
#輸出修改后的字典數(shù)據
print('Dict1_copy:'+str(Dict1_copy))
#淺拷貝,但結果與深拷貝相同
print('Dict1_dcopy:'+str(Dict1_dcopy))
#輸出深拷貝的數(shù)據,數(shù)據未被修改
print('Dict2:'+str(Dict2))
#對象賦值,數(shù)據被修改
運行結果如下:
由此可以看出,數(shù)據修改后,深拷貝一定不會被修改;淺拷貝如果有所謂父對象和子對象即嵌套,第二層可以被修改,不同于深拷貝,如果不存在嵌套,只有父對象,雖然本質上與深拷貝不同,但不會被修改;對象賦值,則是引用,跟著修改而改變。
下面舉個簡單例子,改變特定的數(shù)值,對其它數(shù)值的影響:
Dict_A={
#建立新字典
"A":11,
"B":22,
"C":[33,44,55]
Dict_B=Dict_A
#賦值操作
Dict_C=Dict_A.copy()
#淺拷貝
Dict_D=copy.deepcopy(Dict_A)
#深拷貝
print('Dict_A:'+str(Dict_A))
print('Dict_B:'+str(Dict_B))
print('Dict_C:'+str(Dict_C))
print('Dict_D:'+str(Dict_D))
#修改Dict_D中A
Dict_D['A']=99
print('Dict_A:'+str(Dict_A))#變
print('Dict_B:'+str(Dict_B))#變
print('Dict_C:'+str(Dict_C))#不變
print('Dict_D:'+str(Dict_D))#不變
#修改Dict_B中A
Dict_B['A']=77
print('Dict_A:'+str(Dict_A))#變
print('Dict_B:'+str(Dict_B))#變
print('Dict_C:'+str(Dict_C))#不變
print('Dict_D:'+str(Dict_D))#不變
#修改Dict_C中A
Dict_C['A']=88
print('Dict_A:'+str(Dict_A))#不變
print('Dict_B:'+str(Dict_B))#不變
print('Dict_C:'+str(Dict_C))#變
print('Dict_D:'+str(Dict_D))#不變
#修改Dict_D中A
Dict_D['A']=99
print('Dict_A:'+str(Dict_A))#不變
print('Dict_B:'+str(Dict_B))#不變
print('Dict_C:'+str(Dict_C))#不變
print('Dict_D:'+str(Dict_D))#變
#修改Dict_A中C的第二項
Dict_C['C'][1]=100
print('Dict_A:'+str(Dict_A))#變
print('Dict_B:'+str(Dict_B))#變
print('Dict_C:'+str(Dict_C))#變
print('Dict_D:'+str(Dict_D))#不變
#修改Dict_B中C的第二項
Dict_C['C'][1]=101
print('Dict_A:'+str(Dict_A))#變
print('Dict_B:'+str(Dict_B))#變
print('Dict_C:'+str(Dict_C))#變
print('Dict_D:'+str(Dict_D))#不變
#修改Dict_C中C的第二項
Dict_C['C'][1]=102
print('Dict_A:'+str(Dict_A))#變
print('Dict_B:'+str(Dict_B))#變
print('Dict_C:'+str(Dict_C))#變
print('Dict_D:'+str(Dict_D))#不變
#修改Dict_D中C的第二項
Dict_D['
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新疆第二醫(yī)學院馬克思主義基本原理概論期末考試模擬題含答案解析(奪冠)
- 2025年內蒙古科技職業(yè)學院單招職業(yè)技能測試題庫附答案解析
- 2024年淮南師范學院馬克思主義基本原理概論期末考試題及答案解析(必刷)
- 2025年湖北省孝感市單招職業(yè)傾向性測試題庫帶答案解析
- 2025年貴州民用航空職業(yè)學院單招職業(yè)適應性測試題庫帶答案解析
- 2025年中央美術學院馬克思主義基本原理概論期末考試模擬題帶答案解析
- 2025年樂山職業(yè)技術學院單招職業(yè)適應性考試題庫帶答案解析
- 2025年惠東縣招教考試備考題庫含答案解析(奪冠)
- 2025年北京電子科技學院馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 2026年哈爾濱北方航空職業(yè)技術學院單招職業(yè)傾向性考試題庫附答案解析
- 2025年農村人居環(huán)境五年評估報告
- 《開學第一課:龍馬精神·夢想起航》課件 2025-2026學年統(tǒng)編版語文七年級下冊
- 2026年洪湖市事業(yè)單位人才引進100人參考考試題庫及答案解析
- 浙江省杭州市拱墅區(qū)2024-2025學年四年級上冊期末考試數(shù)學試卷(含答案)
- 醫(yī)保違規(guī)行為分類培訓課件
- 講課學生數(shù)學學習成就
- 醫(yī)療器械法規(guī)對互聯(lián)網銷售的限制
- 西葫蘆栽培技術要點
- 系桿拱橋系桿預應力施工控制要點
- 高中學生學籍表模板(范本)
- 三亞市海棠灣椰子洲島土地價格咨詢報告樣本及三洲工程造價咨詢有限公司管理制度
評論
0/150
提交評論