回答:
はい、彼らは完全に異なることをします。 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
pass
キーワードは何もしないので、構文的にインデントされたスイートが必要だが、何もしたくない場合にのみ役立ちます。一般的な例は、いくつかの例外を無視する場合はを使用しますexcept SomeException: pass
。他にも多くのユースケースがあります。何も実行しない他のステートメントを使用することができるため(例えば0
、効果のない完全に有効なステートメントであるなど)、このためのキーワードは厳密には必要ありませんが、このためのキーワードがあると、何もしたくないことについてより明確に。
pass
ますか?
はい、違いがあります。「ここに実行するコードがない」こと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
あなたの例では、両方のステートメントがループの終わりに現れるので、違いはありません。pass
何もしないという点で単なるプレースホルダーです(次のステートメントに実行を渡します)。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
何もしません。これは空のステートメントプレースホルダーです。
私はむしろあなたに例を挙げたいと思います。これはこれをより明確にするでしょう。
>>> 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
はい、違いがあります。Continue
ループの現在の反復の残りを実際にスキップします(最初に戻ります)。Pass
何もしない空のステートメントです。
それらの例では、違います。ステートメントがループの最後ではない場合、効果は大きく異なります。
forループでのパスと継続の違い:
では、なぜpythonを渡すのですか?
空のクラス、メソッド、またはブロックを作成する場合。
例:
class MyException(Exception):
pass
try:
1/0
except:
pass
上記の例で「pass」を指定しないと、IndentationErrorがスローされます。
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.
パスは何もしません。計算は影響を受けません。しかし、次の計算に進むために、ループの先頭に戻ります。
このように考えてください:
パス: Pythonはインデントのみを処理します。他の言語とは異なり、空の波括弧はありません。
したがって、条件がtrueの場合に何もしない場合は、pass以外のオプションはありません。
続行:これはループの場合にのみ役立ちます。値の範囲について、その特定のパスに対して条件がtrueになった後、ループの残りのステートメントを実行したくない場合は、続行を使用する必要があります。
pass
、ステートメントがif True
であれば、操作を実行しますFalse
。これにより、多目的リストの効率的なスキャンが可能になります。
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
でPythonのドキュメントは、私はそれが晴れ、それはこの場合には継続して同等に振る舞うか、他の何かを意図していた見つけることができませんでしたことを、方法で私を混同しました。最初の文「passステートメントは何もしません。」私の質問に対するすべての回答を特徴づけていますが、どういうわけか私の目を引くことができませんでした。