If passとif continueの違いを伝えるために誰かが次の答えを投稿したのを見ました。 「a」リストが[0,1,2]であることを知っていますが、「if not element」の結果が何なのかわかりません。 continueを使用するときに0が印刷されず、1と2だけが印刷されるのはなぜですか? a = 0、「if not element」が「if not 0」の場合、特別な意味がありますか?
>>> a = [0, 1, 2]
>>> for element in a:
... if not element:
... pass
... print element
...
0
1
2
>>> for element in a:
... if not element:
... continue
... print element
...
1
2
'0'は条件のために出力されません"if not element:"
要素がNone、False、空のstring( '')または0の場合、ループは次の反復で続行されます。
continue
を使用して、for loop
の次の繰り返しを渡しますpass
を使用しても何も起こりません
そのため、continue
を使用する場合、print
は発生しません(コードは次の反復に続くため)
そしてpass
を使用すると、if
を平和的に終了し(実際には何もせず)、print
も同様に実行します。
From: https://docs.python.org/2/tutorial/controlflow.html#pass-statements
Passステートメントは何もしません。ステートメントが構文的に必要であるが、プログラムがアクションを必要としない場合に使用できます。
上記のコードスニペットでは、if not element
はelement = 0
のときにtrue
に評価されます。 In python 0
はブールfalseと同じです。最初のループではpass
は何もしないため、3つの要素すべてを出力します。2番目のループでは、continueは停止しますその反復のループの残りの実行。したがって、printステートメントは実行されないため、1と2のみを出力します。
if not element:
両方の例で、これは0
とのみ一致します。
pass
これはnothingを行います。そのため、次のコマンドprint element
が実行されます。
continue
これにより、Pythonループサイクルでこれを停止し、ループの次のサイクルにスキップするように指示されます。したがって、print element
に到達することはありません。 1
そして上から始めます。
continue
は、反復の最も内側の本体をエスケープするために使用される制御フローステートメントです。コードがヒットしたとき
if not element
インタプリタはto true
を検証しない要素のすべての値をスキップします。 0はそのような値の1つであり、continueステートメントに遭遇しない場合はループの次の反復にスキップするため、要素1
の値を出力し、その後2
を出力します
対照的に、passステートメントは何もせずにスキップし、実行するコードの次の行に戻ります。
Pythonのpass
とcontinue
には根本的な違いがあります。 pass
は単に何もしませんが、continue
はforループの次の反復にジャンプします。ステートメントif not 0
は常にTrue
に評価されるため、pass
とcontinue
ステートメントの両方が実行されます。 pass
は何もせずに値を出力しますが、continue
は次のprint
ステートメントを無視して次の反復にスキップします。