2011-11-23 28 views
115

Python'da bir değişkenin değerini silmek için bir yol var mı? ÖrneğinPython değişkenini temizle

Ben bir ikili ağaç uygulanması ise:

Class Node: 
    self.left = somenode1 
    self.right = somenode2 

Ağaçtan bazı düğüm kaldırmak istiyorsa, ben boşaltmak için self.left ayarlamak gerekir. self.left = None nesi var

cevap

104

? Sorunuzu yanlış yorumluyor muyum, yoksa sadece None anahtar kelimesini bilmiyor musunuz?

+7

Yok anahtar sözcüğü hakkında bilgi sahibi değilsiniz. Diğer dillerde null'a benzer mi? – Bnicholas

+1

Evet; null'a eşdeğerdir. – Smashery

+0

evet, 'Hiçbiri' null', 'nil' ve onun tüm eş anlamlıları gibidir. – juliomalegria

242

del kelime yapardı. DÜZENLENMİŞ

>>> a=1 
>>> a 
1 
>>> del a 
>>> a 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'a' is not defined 

: Ama self.left = None

+11

bazen bunu tamamen kaldırmaz, bu yalnızca bu referansı bir bellekte kaldırır. Bu ghost almayan bellekte hayalet değişkenleri bırakabilir. –

+2

'del' ayrıca mevcut olmayan bir değişkeni silmeye çalışırsanız, bir istisna atar, ki bu genellikle * istenmeyen * dezavantaja sahiptir. –

+16

Sadece yazarak üzerine yazılan bir değişkeni, örneğin, tür (…) 'yazmayı istediğinizde' type =… 'yazıp, sonra da onu silmenin en kolay yolu orijinali geri almanın en kolay yol olduğunu belirtmek istedim. işlevsellik. Yani, onu Hiçbiri gibi tutmazsanız, hala temel fonksiyona erişimi kesecektiniz. – mpacer

2

için oy bu durumda bu deneyebilirsiniz:

self.left = None 
59

var = None değişkenin değerini ayarlayarak, "değerini temizler" "Yok" değerine gibi "boş" için, değişkene ancak işaretçi kalır.

del var tamamen değişken için tanım kaldırır. durumda

daha sonra, örneğin değişken kullanmak istiyorum Bunun için yeni bir değer belirleyin, yani değişkeni koruyun, None daha iyi olurdu.

44

Aslında, bu değişken/özellik silmez. Tüm yapacağı değer, değerini None olarak belirlemektir, bu nedenle değişken bellekte yer kaplar. Değişkenin tüm varlığını bellekten tamamen silmek isterseniz, yalnızca şu komutu yazabilirsiniz:

del self.left 
+5

Neden olduğunu anlamıyorum = Hiçbiri cevap çok popüler. Bu doğru cevap –

+0

OP, 'temizle' kaldır 'dedi. del özniteliği ve aramaları öldürür. Bunu "self.left" ise kontrol edebilir ve bir düğümün boş olup olmadığını kontrol etmek için yeterlidir. – user1767754