2012-02-28 11 views
136

pythonのforループで `continue`と` pass`の違いはありますか?

for element in some_list: 
    if not element: 
     pass 

for element in some_list: 
    if not element: 
     continue 

私が知っておくべきことのように2つのpythonキーワード間continuepass間のいずれかの大きな違いはありますか?

+4

@ S.Lott:例: 'while True:; [python docs](http://docs.python.org/tutorial/controlflow.html#pass-statements)の#キーボード割り込み(Ctrl + C)のビジー待機をパスして、私がその方法で私を混乱させた、この場合には同等の動作をするか、それ以外の何かを意図していることが明らかになります。最初の文章*「パス文は何もしません」*私の質問に対するすべての答えを特徴づけますが、どういうわけかそれは私の目を捉えませんでした。 – Aufwind

答えて

213

はい、まったく別物です。 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 
+2

私はあなたの答えに完全に同意します。しかし、私はまだそれが必要ですパスのキーワードに関する質問がありますか?必要なのはなぜですか?ありがとうございました –

+12

@HardikGajjar: 'pass'キーワードは何もしませんので、インデントされたスイートを構文的に必要とするが、何もしたくない場合にのみ便利です。一般的な例は、いくつかの例外を無視したい場合は、 'exceptExceptionException:pass'を使います。他にも多くのユースケースがあります。 (例えば、 '0'は効果のない完全に有効な文ですが)何もしない他の文を使うことができるので、キーワードは厳密には必要ありませんあなたは何もしたくないということについてもっと明示する必要があります。 –

3

これらの例では、ステートメントがでない場合、ループの最後で、非常に異なる効果があります。

6

continueループの先頭にジャンプします。 passは処理を続行します。

パスがループの最後にある場合、フローはループの先頭に戻るため、その差はごくわずかです。

7

この例では、両方のステートメントがループの最後に表示されるため、違いはありません。 passは単に何もしないという点でプレースホルダに過ぎません(が次のステートメントに実行を渡します)。一方、continueは、明確な目的を持っています。ループをに続行するように指示します。ちょうど再起動したかのようになります。

for element in some_list: 
    if not element: 
     pass 
    print element 

for element in some_list: 
    if not element: 
     continue 
    print element 
45

とは非常に異なっているはい、違いがあります。 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 
4

はい、違いがあります。 Continueは、ループの現在の反復の残りの部分を実際にスキップします(最初に戻ります)。 Passは何もしない空文です。

を参照してくださいpython docs

1

それらの間の違いがあり、
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 
0
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. 

パスは何もしません。計算は影響を受けません。しかし、continueはループの先頭に戻り、次の計算で処理されます。

+3

他の回答との特別な違いは何ですか? –

関連する問題