有沒有辦法在python中清除變量的值?Python中的清晰變量
例如,如果我正在實施一個二叉樹:
Class Node:
self.left = somenode1
self.right = somenode2
如果我想刪除一些樹的節點,我需要設置self.left
空。
有沒有辦法在python中清除變量的值?Python中的清晰變量
例如,如果我正在實施一個二叉樹:
Class Node:
self.left = somenode1
self.right = somenode2
如果我想刪除一些樹的節點,我需要設置self.left
空。
self.left = None
怎麼了?我誤解了你的問題,還是對None
關鍵字不熟悉?
del
關鍵字會做。
>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
編輯:但在這種情況下,我投票給self.left = None
有時這並不能完全移除它,這隻會刪除對內存的引用。這可能會在內存中留下無法獲取gc的幻影變量。 –
'del'也有缺點,如果你試圖刪除一個不存在的變量,它會拋出一個異常,這通常是不受歡迎的。 –
我只是想指出,如果您意外鍵入'type(...)'時意外地聲明瞭一個覆蓋內置命令的變量,例如'type = ...',那麼刪除它是取回原始文件的最簡單方法功能。也就是說,如果你把它保持爲None,你仍然會切斷對底層函數的訪問。 – mpacer
你可以試試這個:
self.left = None
self.left = None
應該做的工作。
var = None
「清除值」,將變量的值設置爲「無」,如「無」的值,但指向變量的指針保持不變。
del var
完全刪除變量的定義。
如果您想在以後使用該變量,例如爲它設置一個新值,即保留該變量,None
會更好。
其實,這並不會刪除變量/屬性。它所要做的就是將其值設置爲None
,因此該變量仍佔用內存中的空間。如果要從內存中完全擦除變量的所有存在,只需鍵入:
del self.left
我不明白爲什麼=無答案是如此受歡迎。這是正確的答案 –
OP說'清除'不是'刪除'。 del會殺死屬性和查找。將它設置爲None的方法比清除方式更清晰,你可以檢查'self.left'是否足夠檢查節點是否爲空。 – user1767754
不熟悉None關鍵字。這與其他語言中的null類似嗎? – Bnicholas
是的;它相當於null。 – Smashery
是的,'None'就像'null','nil'及其所有的「同義詞」。 – juliomalegria