1. 程式人生 > >python 中del 的用法

python 中del 的用法

python中的del用法比較特殊,新手學習往往產生誤解,弄清del的用法,可以幫助深入理解python的記憶體方面的問題。

python的del不同於C的free和C++的delete。

由於python都是引用,而python有GC機制,所以,del語句作用在變數上,而不是資料物件上。

if __name__=='__main__':
    a=1       # 物件 1 被 變數a引用,物件1的引用計數器為1
    b=a       # 物件1 被變數b引用,物件1的引用計數器加1
    c=a       #1物件1 被變數c引用,物件1的引用計數器加1
    del a     #刪除變數a,解除a對1的引用
    del b     #刪除變數b,解除b對1的引用
    print(c)  #最終變數c仍然引用1

del刪除的是變數,而不是資料。

另外。關於list。

if __name__=='__main__':
    li=[1,2,3,4,5]  #列表本身不包含資料1,2,3,4,5,而是包含變數:li[0] li[1] li[2] li[3] li[4] 
    first=li[0]     #拷貝列表,也不會有資料物件的複製,而是建立新的變數引用
    del li[0]
    print(li)      #輸出[2, 3, 4, 5]
    print(first)   #輸出 1