欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

一篇文章讀懂Python賦值與拷貝

系統(tǒng) 1678 0

變量與賦值

在 Python 中,一切皆為對(duì)象,對(duì)象通過(guò)「變量名」引用,「變量名」更確切的叫法是「名字」,好比我們每個(gè)人都有自己的名字一樣,咱們通過(guò)名字來(lái)代指某個(gè)人,代碼里面通過(guò)名字來(lái)指代某個(gè)對(duì)象。

變量賦值就是給對(duì)象綁定一個(gè)名字,賦值并不會(huì)拷貝對(duì)象。好比我們出生的時(shí)候父母就要給我們?nèi)∫粋€(gè)名字一樣,給人取個(gè)綽號(hào)并不來(lái)多出一個(gè)人來(lái),只是多一個(gè)名字罷了。

兩個(gè)對(duì)象做比較有兩種方式,分別是:is 與 == ,is比較的是兩個(gè)對(duì)象是否相同,通過(guò)對(duì)象的ID值可識(shí)別是否為相同對(duì)象,==比較的是兩個(gè)對(duì)象的值是否相等

            
>>> x1 = [1,2]
>>> x2 = [1,2]
>>> x1 is x2
False
>>> id(x1)
4338854088
>>> id(x2)
4338904392
>>> x1 == x2
True
          

x1 和 x2 的值雖然相同,但在內(nèi)存中是兩個(gè)獨(dú)立的不同的對(duì)象,占據(jù)不同的內(nèi)存空間,就好比兩個(gè)長(zhǎng)得一樣的蘋果擺在桌子上,實(shí)則為兩個(gè)不同的物體。

            
>>> x3 = x2
>>> x3 is x2
True
>>> id(x3)
4338904392
          

前面說(shuō)了,賦值是給對(duì)象綁定名字,這里我們只不過(guò)是給 x2 對(duì)應(yīng)的那個(gè)對(duì)象綁定了一個(gè)新的名字叫 x3,這就好比桌上放了一個(gè)蘋果,開(kāi)始給它貼了一個(gè) x2 的標(biāo)簽,后來(lái)又給它添了一個(gè) x3 的標(biāo)簽,本質(zhì)上還是同一個(gè)蘋果,所以,x2 和 x3 所指的其實(shí)是同一個(gè)對(duì)象。

一篇文章讀懂Python賦值與拷貝_第1張圖片

通過(guò)x2 修改對(duì)象時(shí),x3 也會(huì)跟著變化,因?yàn)楸举|(zhì)上它們是同一個(gè)對(duì)象,這就好比張三和小張是同一個(gè)人時(shí),給張三添衣服其實(shí)就是給小張?zhí)硪路?

            
>>> x2.append(3)
>>> x2
[1, 2, 3]
>>> x3
[1, 2, 3]
          

但是,當(dāng)我給 x2 重新賦值時(shí),相當(dāng)于 x2 不再引用之前的對(duì)象,而引用新對(duì)象, x3 依然引用之前的對(duì)象。好比桌上一大蘋果開(kāi)始貼了 x2 和 x3 兩個(gè)標(biāo)簽,給 x2 重新賦值就相當(dāng)于把 x2 標(biāo)簽貼到另外一個(gè)蘋果,但是 x3 還是貼在老蘋果身上。

            
>>> x2 = [3, 4]
>>> x3
[1, 2, 3]
          

一篇文章讀懂Python賦值與拷貝_第2張圖片

對(duì)象拷貝

在業(yè)務(wù)中有時(shí)我們需要復(fù)制一個(gè)對(duì)象,但是又不想對(duì)原對(duì)象產(chǎn)生副作用,肯定不能通過(guò)賦值給一個(gè)新變量來(lái)解決(因?yàn)橘x值不是拷貝對(duì)象),所以 Python 專門提供了一種拷貝機(jī)制,基于原對(duì)象快速創(chuàng)建出一個(gè)含有相同值的對(duì)象。該功能由copy模塊提供。

拷貝又分為淺拷貝和深拷貝。

            
>>> s = [1,2,3]>>> sc = copy.copy(s) # 淺拷貝>>> sc[1, 2, 3]
>>> sdc = copy.deepcopy(s) # 深拷貝
>>> sdc
[1, 2, 3]
          

拷貝出來(lái)的對(duì)象只是值相同,實(shí)為不同的對(duì)象

            
>>> s == sc == sdc 
True
>>> s is sc 
False
>>> s is sdc
False
          

那么淺拷貝(shallow copy)與深拷貝(deep copy)有什么區(qū)別呢?

對(duì)于不可變對(duì)象,比如整數(shù)、字符串、元組、還有由這些不可變對(duì)象組成的集合對(duì)象,淺拷貝和深拷貝沒(méi)有區(qū)別,都是拷貝一個(gè)新對(duì)象

兩者的區(qū)別在于拷貝組合對(duì)象,比如列表中還有列表,字典中還有字典或者列表的情況時(shí),淺拷貝只拷貝了外面的殼子,里面的元素并沒(méi)有拷貝,而深拷貝則是把殼子和里面的元素都拷貝了一份新的。

來(lái)看一個(gè)例子:

            
>>> x = [2, 3]
>>> y = [7, 11]
>>> z = [x, y]
>>> a = copy.copy(z) # 淺拷貝
>>> a[0] is z[0]
True
          

一篇文章讀懂Python賦值與拷貝_第3張圖片

拷貝出來(lái)的對(duì)象 a 中的元素引用的是 x 和 y,當(dāng)你修改 x 的值,a 也會(huì)跟著變。

            
>>> b = copy.deepcopy(z) # 深拷貝
>>> b[0] is z[0]
False
          

一篇文章讀懂Python賦值與拷貝_第4張圖片

對(duì)于深拷貝,里面的元素也重新拷貝了一份,拷貝了一份與x和y等值的兩個(gè)元素,修改 x 和 y 的值,不會(huì)對(duì) b 產(chǎn)生影響

對(duì)列表的切片拷貝z[:]或者是調(diào)用對(duì)象的copy方法list.copy()都屬于淺拷貝。對(duì)于自定義對(duì)象,我們還可以自己實(shí)現(xiàn)__copy__方法和__deepcopy__方法

總結(jié)

以上所述是小編給大家介紹的通過(guò)一篇文章讀懂Python賦值與拷貝,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 三级黄色片在线免费观看 | 五月综合激情婷婷六月色窝 | 91精品啪在线观看国产91九色 | 日韩欧美一级大片 | 午夜精品久久久久久久星辰影院 | 国产精品视频播放 | 欧美高清视频一区 | 福利视频区 | 四季久久免费一区二区三区四区 | 青草青草久热精品视频在线网站 | 国产一区二区三区免费观看 | 午夜精品久久久久久久久久久久久 | 欧美黄色一级片视频 | 无遮挡一级毛片私人影院 | 日韩久久久久久 | 亚洲视频在线一区 | 国产日产在线观看 | 国产第一页浮力 | 亚洲欧洲成人 | 天天操天天拍 | 国产主播福利精品一区二区 | 成人app色深夜福利 欧美电影一区 | 亚洲区在线播放 | 亚洲黄色第一页 | 日韩在线播放网址 | 亚洲成在人线免费视频 | 美女扣下面流白浆丝袜 | www午夜视频 | 日韩一级片在线观看 | 日夜啪| 成人综合久久综合 | 精品一区二区三区不卡 | 日本高清视频在线播放 | 久久久久网站 | 99国产精品 | 中文字幕专区 | 在线不欧美 | 欧美日韩欧美日韩 | 精品日韩欧美国产一区二区 | 成人嫩草影院免费观看 | 久久精品免费视频观看 |