我要糾正推薦答案中的說(shuō)法!
創(chuàng)新互聯(lián)主營(yíng)梁平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開發(fā),梁平h5小程序開發(fā)搭建,梁平網(wǎng)站營(yíng)銷推廣歡迎梁平等地區(qū)企業(yè)咨詢
del并不是用來(lái)“刪除引用指向的內(nèi)存空間”,python中的del和c++中的delete是完全兩個(gè)概念,不要誤人子弟。。
一般來(lái)講,del是用來(lái)刪除變量的引用的,例如a = 1; del a,這里a是對(duì)1這個(gè)值的引用(python中所有的變量都可視作引用),而del a就是刪除這一引用關(guān)系,也就是說(shuō),1不再被a這個(gè)變量引用了,同時(shí)a這個(gè)變量名也從變量表中剔除了。
如果還是不太清楚,我舉這個(gè)例子你就明白了:
a = object()
b = a
del a
print b
print a # 該句會(huì)報(bào)a未定義的異常
這段代碼中,a引用了一個(gè)新對(duì)象object(),而b=a使得b也引用了這個(gè)對(duì)象,a和b雖然是兩個(gè)變量,但它們引用的是同一個(gè)對(duì)象,有點(diǎn)類似于c++中的兩個(gè)指針指向同一個(gè)對(duì)象。
而后面del a僅僅只是把a(bǔ)這個(gè)變量對(duì)object()的引用刪掉了,同時(shí)a的變量名也失效了,但并不表示object()這個(gè)對(duì)象被刪除了,它還在,并且b還引用著它呢。從后面print b能正常輸出就可以看出這一點(diǎn)。
python的內(nèi)存釋放采用的是引用計(jì)數(shù)機(jī)制,也就是當(dāng)一個(gè)對(duì)象沒有任何引用它的變量了,那么它就會(huì)自動(dòng)被釋放,無(wú)需人工干預(yù)。
此外,del對(duì)于不同的對(duì)象也會(huì)有不同的功能,這取決于對(duì)象本身對(duì)__del__系統(tǒng)方法的實(shí)現(xiàn)。例如一個(gè)列表a = [1,2,3],del a[0]表示將列表的首項(xiàng)刪除,此時(shí)a就變成[2,3]了。如果是自定義的對(duì)象,那del的功能更是可以定義成你想要的任何樣子,詳情請(qǐng)參考python幫助中的__del__詞條。
Python想要進(jìn)行刪除自定義函數(shù)的,可以去按一下它的delete按鍵,然后或者是你可以點(diǎn)擊右鍵刪除。
無(wú)法刪除函數(shù)調(diào)用是指索引工作錯(cuò)誤。函數(shù)必須先定義,才能調(diào)用,否則會(huì)報(bào)錯(cuò)。Python是一種廣泛使用的解釋型、高級(jí)和通用的編程語(yǔ)言。Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的GuidovanRossum創(chuàng)造,第一版發(fā)布于1991年,它是ABC語(yǔ)言的后繼者,也可以視之為一種使用傳統(tǒng)中綴表達(dá)式的LISP方言。