當前位置:成語大全網 - 新華字典 - python中的delete函數是如何使用的?

python中的delete函數是如何使用的?

我要糾正推薦答案中的說法!

del並不是用來“刪除引用指向的內存空間”,python中的del和c++中的delete是完全兩個概念,不要誤人子弟。。

壹般來講,del是用來刪除變量的引用的,例如a = 1; del a,這裏a是對1這個值的引用(python中所有的變量都可視作引用),而del a就是刪除這壹引用關系,也就是說,1不再被a這個變量引用了,同時a這個變量名也從變量表中剔除了。

如果還是不太清楚,我舉這個例子妳就明白了:

a = object()

b = a

del a

print b

print a # 該句會報a未定義的異常

這段代碼中,a引用了壹個新對象object(),而b=a使得b也引用了這個對象,a和b雖然是兩個變量,但它們引用的是同壹個對象,有點類似於c++中的兩個指針指向同壹個對象。

而後面del a僅僅只是把a這個變量對object()的引用刪掉了,同時a的變量名也失效了,但並不表示object()這個對象被刪除了,它還在,並且b還引用著它呢。從後面print b能正常輸出就可以看出這壹點。

python的內存釋放采用的是引用計數機制,也就是當壹個對象沒有任何引用它的變量了,那麽它就會自動被釋放,無需人工幹預。

此外,del對於不同的對象也會有不同的功能,這取決於對象本身對__del__系統方法的實現。例如壹個列表a = [1,2,3],del a[0]表示將列表的首項刪除,此時a就變成[2,3]了。如果是自定義的對象,那del的功能更是可以定義成妳想要的任何樣子,詳情請參考python幫助中的__del__詞條。