2017-05-12 2 views
-2

Kann mir bitte jemand hier sagen, was ist der genaue Unterschied zwischen wenn und wenn nicht hier im Code.Unterschied zwischen ob und wenn nicht Python

def postordertraversse(self,top): 

     m=[] 
     if(top):    
     if not self.postordertraversse(top.left): 
     m.append(top.root) 
     top_most=m.pop(0) 

conv=createlist(); 
conv.postordertraversse(conv.top) 

Was ich verstehen kann, ist, wenn oben bedeutet if top Objektinstanz existiert dann innerhalb des Blocks bewegen und überprüfen if not d.h bis top.left nicht null keep Anhängen ist.

+0

Es gibt keine Schleife in Ihrem Beispiel - also nicht weiter bis "null". – tdelaney

Antwort

0

nicht in Python ist wie die Negation in anderen Programmiersprachen.

0

'nicht' Anweisung konvertiert nur weitere Ausdruck. Zum Beispiel:

not True - False 
not False - True 
3

if x: bedeutet "wenn x truthy ist".

if not x: bedeutet "wenn x falsch ist".

Ob etwas truthy oder Falsey hängt davon ab, welche Art von Objekt es sich handelt.

Für Zahlen ist 0 falsch, und alle anderen Werte sind truthy.

Für Boolesche Werte ist True truthy und False ist Falsey (natürlich!)

Für Sammlungen (Listen, Tupel, Wörterbücher, Strings, etc.), leere sind Falsey und nicht-leere truthy sind.

Also in Ihrem Beispielcode werden die beiden if Aussagen zu sagen:

wenn oben ist truthy:

wenn das Ergebnis von self.postordertraversse (top.left) Falsey ist:

+0

also bedeutet es, dass meine Funktion prüft, ob es Rückgabewerte wie 0, False oder keine Werte erhält, dann führe die Anweisungen in if, correct aus? @ John Gordon – codaholic

+0

Ja. Ich habe aber gerade gemerkt, dass die Funktion _itself_ aufruft und niemals '' 'zurückgibt, daher wird standardmäßig' None' zurückgegeben, so dass das 'if' niemals wahr ist. –

Verwandte Themen