Python底層|賦值 淺拷貝 深拷貝

參考

python中的深拷貝和淺拷貝問題
python的復(fù)制社痛,深拷貝和淺拷貝的區(qū)別

結(jié)論

總體來說胀蛮,賦值只是增加了一個對象的引用蹂析,它們指向內(nèi)存中的同一個對象葛碧;淺拷貝會開辟新內(nèi)存將對象拷貝一份借杰,但是不會拷貝子對象;深拷貝會開辟新內(nèi)存將對象拷貝后进泼,連帶子對象也拷貝蔗衡,與原對象完全獨(dú)立纤虽。

示意圖

python賦值、淺拷貝绞惦、深拷貝.jpg

代碼示意

1逼纸、賦值

>>> a = [1,2,3,[4,5]]
>>> b = a              # 通常的賦值操作
>>> a      
[1, 2, 3, [4, 5]]
>>> b
[1, 2, 3, [4, 5]]
>>> b[0] = 111         # 將b[0]由1變?yōu)?11
>>> a                  # 結(jié)果顯示a[0]和b[0]一起都改變了
[111, 2, 3, [4, 5]]
>>> b
[111, 2, 3, [4, 5]]
>>> b[3][1] = 444      # 將b[3][1]由5變?yōu)?44
>>> a
[111, 2, 3, [4, 444]]  # 結(jié)果依然是a[3][1]和b[3][1]一起都改變了
>>> b
[111, 2, 3, [4, 444]]

從上述代碼中可以看出:這里只是傳遞對象的引用而已,a和b指向的是同一個對象济蝉。原始列表改變杰刽,被賦值的b也會做相同的改變。

2王滤、淺拷貝

>>> import copy
>>> a = [1,2,3,[4,5]]
>>> b = copy.copy(a)# b為a的淺拷貝
>>> a
[1, 2, 3, [4, 5]]
>>> b
[1, 2, 3, [4, 5]]
>>> b[0]=111        # 將b[0]由1變?yōu)?11
>>> a               # 結(jié)果顯示a[0]并沒有變贺嫂,但b[0]變成了111
[1, 2, 3, [4, 5]]
>>> b
[111, 2, 3, [4, 5]]
>>> b[3][1]=444     # 將b[3][1]由5變?yōu)?44
>>> a               # 結(jié)果顯示a[3][1]和b[3][1]都變了
[1, 2, 3, [4, 444]]
>>> b
[111, 2, 3, [4, 444]]

從上述代碼中可以看出:b指向的是a的淺拷貝對象,沒有拷貝子對象雁乡,所以a和b的子對象是相同的引用涝婉。如果我們改變b中的對象,對a不會造成影響蔗怠;如果改變了b的子對象墩弯,則a和b對應(yīng)的子對象都會改變。

3寞射、深拷貝

>>> import copy
>>> a = [1,2,3,[4,5]]
>>> b = copy.deepcopy(a)# b為a的深拷貝
>>> a
[1, 2, 3, [4, 5]]
>>> b
[1, 2, 3, [4, 5]]
>>> b[0]=111            # 將b[0]由1變?yōu)?11
>>> a                   # 結(jié)果顯示a[0]沒有變渔工,b[0]變?yōu)?11,與淺拷貝結(jié)果一樣
[1, 2, 3, [4, 5]]
>>> b
[111, 2, 3, [4, 5]]
>>> b[3][1]=444         # 將b[3][1]由5變?yōu)?44
>>> a                   # 結(jié)果顯示a[3][1]沒變桥温,b[3][1]都變?yōu)?44引矩,與淺拷貝結(jié)果不一樣
[1, 2, 3, [4, 5]]
>>> b 
[111, 2, 3, [4, 444]]

從上述代碼可以看出:兩個對象 a 和 b 相互獨(dú)立。b指向a的深拷貝對象侵浸,包含a中的子對象的拷貝旺韭,所以對b進(jìn)行改變不會造成a中任何元素的改變。

結(jié)尾

如果您發(fā)現(xiàn)我的文章有任何錯誤掏觉,或?qū)ξ业奈恼掠惺裁春玫慕ㄗh区端,請聯(lián)系我!如果您喜歡我的文章澳腹,請點(diǎn)喜歡~*我是藍(lán)白絳织盼,感謝你的閱讀!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酱塔,一起剝皮案震驚了整個濱河市沥邻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌羊娃,老刑警劉巖唐全,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蕊玷,居然都是意外死亡邮利,警方通過查閱死者的電腦和手機(jī)弥雹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來近弟,“玉大人,你說我怎么就攤上這事挺智〉挥洌” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵赦颇,是天一觀的道長二鳄。 經(jīng)常有香客問我,道長媒怯,這世上最難降的妖魔是什么订讼? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮扇苞,結(jié)果婚禮上欺殿,老公的妹妹穿的比我還像新娘。我一直安慰自己鳖敷,他們只是感情好脖苏,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著定踱,像睡著了一般棍潘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崖媚,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天亦歉,我揣著相機(jī)與錄音,去河邊找鬼畅哑。 笑死肴楷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荠呐。 我是一名探鬼主播阶祭,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼直秆!你這毒婦竟也來了濒募?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤圾结,失蹤者是張志新(化名)和其女友劉穎瑰剃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筝野,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晌姚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年粤剧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挥唠。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡抵恋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宝磨,到底是詐尸還是另有隱情弧关,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布唤锉,位于F島的核電站世囊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窿祥。R本人自食惡果不足惜株憾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晒衩。 院中可真熱鬧嗤瞎,春花似錦、人聲如沸听系。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跛锌。三九已至弃秆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間髓帽,已是汗流浹背菠赚。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郑藏,地道東北人衡查。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像必盖,于是被迫代替她去往敵國和親拌牲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容