例のように2つのPythonキーワードcontinue
とpass
の間に大きな違いはありますか
for element in some_list:
if not element:
pass
そして
for element in some_list:
if not element:
continue
知っておくべきですか?
はい、彼らは全く異なることをします。 pass
は単純に何もしませんが、continue
は次のループの繰り返しを続けます。あなたの例では、if
の後に別のステートメントを追加すると違いが明らかになります。pass
を実行した後、このステートメントがさらに実行されます。 continue
の後は、そうではありません。
>>> 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
はい、違いがあります。 continue
は次の反復でループを強制的に開始しますが、pass
は「ここで実行するコードはありません」という意味で、残りまたはループ本体まで続きます。
これらを実行して、違いを確認してください。
for element in some_list:
if not element:
pass
print 1 # will print after pass
for element in some_list:
if not element:
continue
print 1 # will not print after continue
continue
はループの先頭に戻ります。 pass
は処理を続行します。
パスがループの最後にある場合、フローはループの先頭に戻るため、違いは無視できます。
この例では、ループの最後に両方のステートメントが表示されるため、違いはありません。 pass
は単なるプレースホルダーであり、何も実行しません(次のステートメントにpasses実行)。一方、continue
には明確な目的があります。ループにcontinueを再起動したかのように伝えます。
for element in some_list:
if not element:
pass
print element
とは非常に異なります
for element in some_list:
if not element:
continue
print element
はい、違いがあります。 Continue
は、実際にループの現在の反復の残りをスキップします(先頭に戻ります)。 Pass
は何もしない空のステートメントです。
python docs を参照してください
それらの間には違いがあり、continue
は、ループの現在の反復をスキップして、次の反復を実行します。pass
は何もしません。空のステートメントプレースホルダーです。
例を挙げて、これをより明確にしたいと思います。
>>> for element in some_list:
... if element == 1:
... print "Pass executed"
... pass
... print element
...
0
Pass executed
1
2
>>> for element in some_list:
... if element == 1:
... print "Continue executed"
... continue
... print element
...
0
Continue executed
2
それらの例では、いいえ。ステートメントがnotループの最後の場合、それらはvery異なる効果を持ちます。
x = [1,2,3,4]
for i in x:
if i==2:
pass #Pass actually does nothing. It continues to execute statements below it.
print "This statement is from pass."
for i in x:
if i==2:
continue #Continue gets back to top of the loop.And statements below continue are executed.
print "This statement is from continue."
出力は
>>> This statement is from pass.
繰り返しますが、同じコードを少し変更して実行します。
x = [1,2,3,4]
for i in x:
if i==2:
pass #Pass actually does nothing. It continues to execute statements below it.
print "This statement is from pass."
for i in x:
if i==2:
continue #Continue gets back to top of the loop.And statements below continue are executed.
print "This statement is from continue."
出力は-
>>> This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from continue.
This statement is from continue.
This statement is from continue.
Passは何もしません。計算は影響を受けません。ただし、ループの先頭に戻って次の計算に進みます。
このように考えてください:
Pass: Pythonはインデントでのみ動作します!他の言語とは異なり、空の中括弧はありません。
そのため、条件がtrueの場合に何もしない場合は、pass以外のオプションはありません。
Continue:これはループの場合にのみ有用です。ある場合、値の範囲について、その特定のパスでその条件が真になった後にループの残りのステートメントを実行したくない場合は、continueを使用する必要があります。