談一談 python 中 del 的用法

del涉及到python中的內(nèi)存管理機(jī)制,從c/c++轉(zhuǎn)過來的同學(xué)可能會(huì)踩一些語法坑,下面上一些代碼及運(yùn)行結(jié)果,談?wù)劷裉煲v的問題,后面再解釋具體原理機(jī)制。

a = 1
b = a
c = a
print(a)
print(b)
print(c)
  • 結(jié)果

1
1
1

這個(gè)結(jié)果是很顯然的,不多解釋。
下面,del a和b, 打印c看一看:

 a=1       # 對(duì)象 1 被 變量a引用,對(duì)象1的引用計(jì)數(shù)器為1
 b=a       # 對(duì)象1 被變量b引用,對(duì)象1的引用計(jì)數(shù)器加1 = 2
 c=a       #1對(duì)象1 被變量c引用,對(duì)象1的引用計(jì)數(shù)器加1 = 3
 del a     #刪除變量a,解除a對(duì)1的引用
 del b     #刪除變量b,解除b對(duì)1的引用
 print(c)  #最終變量c仍然引用1

結(jié)果:

1

很奇怪,明明a已經(jīng)被del了,c=a還是可以得到1的結(jié)果。

  • 這就是python的GC也就是垃圾回收機(jī)制:
    由于python都是引用,而python有GC機(jī)制,所以,del語句作用在變量上,而不是數(shù)據(jù)對(duì)象上。
  • 將a和b del之后,1的引用計(jì)數(shù)仍然為1,所以不會(huì)被清除。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個(gè)常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,914評(píng)論 0 27
  • 1.元類 1.1.1類也是對(duì)象 在大多數(shù)編程語言中,類就是一組用來描述如何生成一個(gè)對(duì)象的代碼段。在Python中這...
    TENG書閱讀 1,419評(píng)論 0 3
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,809評(píng)論 1 118
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,341評(píng)論 0 10
  • 進(jìn)度條10-160 今天是周南第10首,共三章。后世對(duì)《詩(shī)經(jīng)》注釋版本多至千余種,同一首詩(shī)會(huì)有不同的理解。以我現(xiàn)在...
    劉小麥同學(xué)閱讀 706評(píng)論 0 0

友情鏈接更多精彩內(nèi)容