2020 09 05python中的del用法

2021-10-24 08:34:45 字數 718 閱讀 7238

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刪除的是變數,而不是資料。

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  

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...

python中雙重迴圈 加速Python中的雙迴圈

有沒有辦法加快從上一次迭代更新其值的雙迴圈?在 中 def calc n,m x 1.0 y 2.0 container np.zeros n,2 for i in range n for j in range m x np.random.gamma 3,1.0 y y 4 y np.random....