什么是淺拷貝,什么是深拷貝?
一、淺拷貝
淺拷貝就是:拷貝了引用,并沒有拷貝內(nèi)容,和在Linux中的硬鏈接有些類似,在python中,使用=賦值的動(dòng)作就是一個(gè)淺拷貝
淺拷貝中的新舊對象,共用一個(gè)內(nèi)存地址,當(dāng)操作新舊對象中的任意對象,發(fā)生修改,內(nèi)存地址中的值發(fā)生改變,則新舊對象都會(huì)發(fā)生變化;如果新舊對象只是被重新賦值,這個(gè)動(dòng)作則不會(huì)影響其他對象的值;
二、深拷貝
深拷貝是對于一個(gè)對象所有層次的拷貝,重新開辟內(nèi)存地址。
#使用copy模塊
#深拷貝,重新開辟內(nèi)存,并內(nèi)容獨(dú)立
e = copy.deepcopy?
#深拷貝,重新開辟內(nèi)存,但是新內(nèi)容里面仍保存原來的引用
f = copy.copy?文章來源:http://www.zghlxwxcb.cn/news/detail-700187.html
三、深淺拷貝對比
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c #直接賦值,淺拷貝
print("c的內(nèi)存地址為:%s"%id(c))
print("d的內(nèi)存地址為:%s"%id(d))
#使用copy模塊
#深拷貝,重新開辟內(nèi)存,并內(nèi)容獨(dú)立
e = copy.deepcopy(c)
#深拷貝,重新開辟內(nèi)存,但是新內(nèi)容里面仍保存原來的引用
f = copy.copy(c)
#打印e,f的地址
print("e的內(nèi)存地址為:%s"%id(e))
print("f的內(nèi)存地址為:%s"%id(f))
#改變a的值
a.append(44)
#打印a,b,c,d,e,f
print("a = %s"%a)
print("b = %s"%b)
print("c = %s"%c)
print("d = %s"%d)
print("e = %s"%e)
print("f = %s" % f)
以上內(nèi)容來自網(wǎng)絡(luò),根據(jù)自己的理解的表達(dá),如果不對,請聯(lián)系更正~文章來源地址http://www.zghlxwxcb.cn/news/detail-700187.html
到了這里,關(guān)于Python中的深拷貝淺拷貝的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!