W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
深淺拷貝分為兩部分,一部分是數(shù)字和字符串另一部分是列表、元組、字典等其他數(shù)據(jù)類型。
對于數(shù)字
和字符串
而言,賦值、淺拷貝和深拷貝無意義,因?yàn)樗麄兊闹涤肋h(yuǎn)都會指向同一個內(nèi)存地址。
1 | <span style= "font-family:arial, helvetica, sans-serif;font-size:18px;" > # 導(dǎo)入copy模塊>>> import copy# 定義一個變量var1>>> var1 = 123<br># 輸出var1的內(nèi)存地址>>> id(var1)1347747440>>> var2 = var1<br># var2的內(nèi)存地址和var1相同>>> id(var2)1347747440<br># 淺拷貝>>> var3 = copy.copy(var1)<br># var3的內(nèi)存地址和var1相同>>> id(var3)1347747440<br># 深拷貝>>> var4 = copy.deepcopy(var1)# var4的內(nèi)存地址和var1相同>>> id(var4)1347747440<br></span> |
對于字典、元祖、列表 而言,進(jìn)行賦值、淺拷貝和深拷貝時,其內(nèi)存地址的變化是不同的。
創(chuàng)建一個字典var1
1 | <span style= "font-family:arial, helvetica, sans-serif;font-size:18px;" >var1 = { "k1" : "1" , "k2" : 2, "k3" : [ "abc" , 456]}<br>< /span > |
賦值,只是創(chuàng)建一個變量,該變量指向原來內(nèi)存地址,如:
1 | <span style= "font-family:arial, helvetica, sans-serif;font-size:18px;" >>>> var1 = { "k1" : "1" , "k2" : 2, "k3" : [ "abc" , 456]}>>> var2 = var1>>> id (var1)1937003361288>>> id (var2)1937003361288<br>< /span > |
如圖所示:
淺拷貝,在內(nèi)存中只額外創(chuàng)建第一層數(shù)據(jù)
1 | <span style= "font-family:arial, helvetica, sans-serif;font-size:18px;" > # 導(dǎo)入拷貝模塊>>> import copy>>> var1 = {"k1": "1", "k2": 2, "k3": ["abc", 456]}<br># 使用淺拷貝的方式>>> var2 = copy.copy(var1)<br># 兩個變量的內(nèi)存地址是不一樣的>>> id(var1)2084726354952>>> id(var2)2084730248008# 但是他們的元素內(nèi)存地址是一樣的>>> id(var1["k1"])2084726207464>>> id(var2["k1"])2084726207464<br></span> |
如圖所示:
深拷貝,在內(nèi)存中將所有的數(shù)據(jù)重新創(chuàng)建一份(排除最后一層,即:python內(nèi)部對字符串和數(shù)字的優(yōu)化)
1 | <span style= "font-family:arial, helvetica, sans-serif;font-size:18px;" > # 導(dǎo)入拷貝模塊>>> import copy>>> var1 = {"k1": "1", "k2": 2, "k3": ["abc", 456]}<br># 使用深拷貝的方式把var1的內(nèi)容拷貝給var2>>> var2 = copy.deepcopy(var1)<br># var1和var2的內(nèi)存地址是不相同的>>> id(var1)1706383946760>>> id(var2)1706389852744<br># var1和var2的元素"k3"內(nèi)存地址是不相同的>>> id(var1["k3"])1706389853576>>> id(var2["k3"])1706389740744# var1和var2的"k3"元素的內(nèi)存地址是相同的>>> id(var1["k3"][1])1706383265744>>> id(var2["k3"][1])1706383265744<br></span> |
如圖所示:
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: