溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python淺復(fù)制中對(duì)象生存周期實(shí)例分析

發(fā)布時(shí)間:2020-10-07 08:43:06 來(lái)源:腳本之家 閱讀:129 作者:grey_csdn 欄目:開(kāi)發(fā)技術(shù)

本文實(shí)例講述了Python淺復(fù)制中對(duì)象生存周期。分享給大家供大家參考,具體如下:

Python的淺復(fù)制以及深復(fù)制我了解的并不多,我不清楚shutil中的copy1和copy2是不是算是淺復(fù)制和深復(fù)制?這兩個(gè)操作,一個(gè)是文件屬性重建,還有一個(gè)是文件屬性不變。不知道對(duì)象的復(fù)制是否可以以此類(lèi)比?

在復(fù)制之前,為了能夠觀看一下GC的執(zhí)行,定義一個(gè)特殊的類(lèi)和對(duì)象。測(cè)試代碼如下:

class Demo:
    def __del__(self):
       print("Removing{0}".format(id(self)))
x = Demo()
del x

程序執(zhí)行結(jié)果如下:

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythoncopy1.py
Removing1772226785520

接下來(lái)構(gòu)造淺復(fù)制的例子:

>>>obj_list1 = [Demo(),Demo()]
>>>obj_list2 = obj_list1[:]
>>> del obj_list1
>>> del obj_list2
Removing1902510644416
Removing1902510644360

從上面的結(jié)果看,第一次del并沒(méi)有觸發(fā)對(duì)象銷(xiāo)毀的方法執(zhí)行。這是在交互界面中進(jìn)行調(diào)試出現(xiàn)的結(jié)果,如果代碼是寫(xiě)到一個(gè)具體的文件中,那么程序執(zhí)行的結(jié)果有可能不同。當(dāng)所有的語(yǔ)句都寫(xiě)到同一個(gè)文件中的時(shí)候,文件中的對(duì)象作用域會(huì)有輕微的調(diào)整。這是值得我們注意的。

另一種常見(jiàn)的淺復(fù)制方法:

>>> o1 =o2 = Demo()
>>> del o1
>>> del o2
Removing1902510136568

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字典操作技巧匯總》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI