2017-05-12 7 views
-2

との正確な相違点は誰にでも教えてください。ここに記載されています。トップは、ブロック内を移動し、top.leftはを追加ヌルキープではないまでif notすなわちをチェック存在if topオブジェクトのインスタンスを意味している場合、私は理解することができますどのような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) 

です。

+0

あなたの例ではループはありません。したがって、 "null"まで追加し続けることはありません。 – tdelaney

答えて

0

python以外では、他のプログラミング言語では否定的です。

0

'not'文は、それ以上の式を変換します。たとえば:

not True - False 
not False - True 
3

if x:は、「if x is truthy」を意味します。

if not x:は、「xが偽であれば」を意味します。

真実またはであるかどうかは、どのようなオブジェクトであるかによって異なります。

数字の場合、0は偽であり、他のすべての値は真実です。ブール値について

TrueはtruthyあるとFalseはfalseyです(当然!)

コレクション(リスト、タプル、辞書、文字列など)の場合、空のものはfalseyと非空のものがtruthyあります。

だからあなたのコード例では、2つのifステートメントが言っている:

トップがtruthyの場合:

self.postordertraversseの結果(top.left)がfalseyの場合:

+0

それは私の関数が0、Falseまたは何も値として返された値を取得しているかどうかをチェックしていることを意味します。 @ジョンゴードン – codaholic

+0

はい。しかし、私は関数が_itself_を呼び出していることに気付きました。何も返さないので、デフォルトでは 'None'を返すので、' if'は決して真ではありません。 –

関連する問題