Python析構(gòu)函數(shù)__del__定義原理解析
析構(gòu)函數(shù)__del__定義:在類里定義,如果不定義,Python 會在后臺提供默認析構(gòu)函數(shù)。
析構(gòu)函數(shù)__del__調(diào)用:
A、使用del 顯式的調(diào)用析構(gòu)函數(shù)刪除對象時:del對象名;
class Foo: def __init__(self,x): self.x=x def __del__(self): #在對象資源被釋放時觸發(fā) print(’-----del------’) print(self)f=Foo(100000)del f
B、當(dāng)對象在某個作用域中調(diào)用完畢,跳出其作用域的同時析構(gòu)函數(shù)也會被調(diào)用一次,這樣可以用來釋放內(nèi)存空間。
class Foo:def __init__(self,x): self.x=x def __del__(self): #在對象資源被釋放時觸發(fā) print(’-----del------’) print(self)f=Foo(100000)time.sleep(5) #time.sleep(5)執(zhí)行完后,自動調(diào)用__del__()
注意:__del__只是刪除了對象的引用,比如上面del f 只是f對象不再執(zhí)行實例數(shù)據(jù)的存儲空間了,實例數(shù)據(jù)并沒有被刪除,刪除實例數(shù)據(jù)需要python本身的垃圾回收機制;
垃圾回收機制
Python 采用垃圾回收機制來清理不再使用的對象;Python 提供gc模塊釋放不再使用的對象,Python 采用‘引用計數(shù)’ 的算法方式來處理回收,
即:當(dāng)某個對象在其作用域內(nèi)不再被其他對象引用的時候,Python 就自動清除對象;
Python 的函數(shù)collect()可以一次性收集所有待處理的對象(gc.collect())
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP新手必備的基礎(chǔ)知識2. asp文件用什么軟件編輯3. Docker 啟動Redis 并設(shè)置密碼的操作4. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )5. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對象6. JS中6個對象數(shù)組去重的方法7. vue+element開發(fā)一個谷歌插件的全過程8. Vue axios獲取token臨時令牌封裝案例9. 通過IEAD+Maven快速搭建SSM項目的過程(Spring + Spring MVC + Mybatis)10. 利用CSS制作3D動畫

網(wǎng)公網(wǎng)安備