Python析構(gòu)函數(shù)__del__定義原理解析
析構(gòu)函數(shù)__del__定義:在類里定義,如果不定義,Python 會(huì)在后臺(tái)提供默認(rèn)析構(gòu)函數(shù)。
析構(gòu)函數(shù)__del__調(diào)用:
A、使用del 顯式的調(diào)用析構(gòu)函數(shù)刪除對(duì)象時(shí):del對(duì)象名;
class Foo: def __init__(self,x): self.x=x def __del__(self): #在對(duì)象資源被釋放時(shí)觸發(fā) print('-----del------') print(self) f=Foo(100000) del f
B、當(dāng)對(duì)象在某個(gè)作用域中調(diào)用完畢,跳出其作用域的同時(shí)析構(gòu)函數(shù)也會(huì)被調(diào)用一次,這樣可以用來釋放內(nèi)存空間。
class Foo: def __init__(self,x): self.x=x def __del__(self): #在對(duì)象資源被釋放時(shí)觸發(fā) print('-----del------') print(self) f=Foo(100000) time.sleep(5) #time.sleep(5)執(zhí)行完后,自動(dòng)調(diào)用__del__()
注意:__del__只是刪除了對(duì)象的引用,比如上面del f 只是f對(duì)象不再執(zhí)行實(shí)例數(shù)據(jù)的存儲(chǔ)空間了,實(shí)例數(shù)據(jù)并沒有被刪除,刪除實(shí)例數(shù)據(jù)需要python本身的垃圾回收機(jī)制;
垃圾回收機(jī)制
Python 采用垃圾回收機(jī)制來清理不再使用的對(duì)象;Python 提供gc模塊釋放不再使用的對(duì)象,Python 采用‘引用計(jì)數(shù)' 的算法方式來處理回收,
即:當(dāng)某個(gè)對(duì)象在其作用域內(nèi)不再被其他對(duì)象引用的時(shí)候,Python 就自動(dòng)清除對(duì)象;
Python 的函數(shù)collect()可以一次性收集所有待處理的對(duì)象(gc.collect())
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)批量下載ts文件并合并為mp4
這篇文章主要為大家詳細(xì)介紹了如何通過Python語言實(shí)現(xiàn)批量下載ts文件并合并為mp4視頻的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-06-06python簡(jiǎn)單獲取本機(jī)計(jì)算機(jī)名和IP地址的方法
這篇文章主要介紹了python簡(jiǎn)單獲取本機(jī)計(jì)算機(jī)名和IP地址的方法,涉及Python中socket模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-06-06基于python模擬TCP3次握手連接及發(fā)送數(shù)據(jù)
這篇文章主要介紹了基于python模擬TCP3次握手連接及發(fā)送數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11你知道怎么改進(jìn)Python 二分法和牛頓迭代法求算術(shù)平方根嗎
這篇文章主要介紹了Python編程實(shí)現(xiàn)二分法和牛頓迭代法求平方根代碼的改進(jìn),具有一定參考價(jià)值,需要的朋友可以了解下,希望能夠給你帶來幫助2021-08-08