web-dev-qa-db-ger.com

Gibt es einen Unterschied zwischen "continue" und "pass" in einer for-Schleife in Python?

Gibt es einen signifikanten Unterschied zwischen den beiden Python-Schlüsselwörtern continue und pass wie in den Beispielen

for element in some_list:
    if not element:
        pass

und

for element in some_list:
    if not element:
        continue

Sollte ich wissen

195
Aufwind

Ja, sie machen ganz andere Dinge. pass tut einfach nichts, während continue mit der nächsten Schleifeniteration fortfährt. In Ihrem Beispiel wird der Unterschied deutlich, wenn Sie nach if eine weitere Anweisung hinzufügen: Nach der Ausführung von pass wird diese weitere Anweisung ausgeführt. Nach continue würde es nicht.

>>> 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
291
Sven Marnach

Ja, da ist ein Unterschied. continue zwingt die Schleife dazu, bei der nächsten Iteration zu beginnen, während pass "hier ist kein Code zum Ausführen" bedeutet und durch den Rest oder den Schleifenrumpf fortgesetzt wird.

Führen Sie diese aus und sehen Sie den Unterschied:

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
55
user130076

continue springt an den Anfang der Schleife. pass wird die Verarbeitung fortsetzen.

wenn der Durchlauf für die Schleife am Ende ist, ist die Differenz vernachlässigbar, da der Fluss sowieso nur bis zum Anfang der Schleife zurückkehren würde.

14
tMC

In Ihrem Beispiel gibt es keinen Unterschied, da beide Anweisungen am Ende der Schleife erscheinen. pass ist einfach ein Platzhalter, da es nichts tut (es übergibt die Ausführung an die nächste Anweisung). continue hat dagegen einen bestimmten Zweck: Sie teilt der Schleife continue mit, als ob sie gerade neu gestartet worden wäre.

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

ist sehr verschieden von

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

Ja, da ist ein Unterschied. Continue überspringt tatsächlich den Rest der aktuellen Iteration der Schleife (Rückkehr zum Anfang). Pass ist eine leere Anweisung, die nichts tut.

Siehe die Python-Dokumente

4
froadie

In diesen Beispielen nein. Wenn die Anweisung nicht die allerletzte in der Schleife ist, dann haben sie sehr unterschiedliche Auswirkungen.

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."

Die Ausgabe ist 

>>> This statement is from pass.

Lassen Sie den gleichen Code erneut mit geringfügigen Änderungen ausführen. 

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."

Die Ausgabe ist -

>>> 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 macht nichts. Die Berechnung bleibt davon unberührt. Fortfahren kehrt jedoch zum Anfang der Schleife zurück, um mit der nächsten Berechnung ausgeführt zu werden.

1

Es gibt einen Unterschied zwischen ihnen, 
continue überspringt die aktuelle Iteration der Schleife und führt die nächste Iteration aus.
pass tut nichts. Es ist ein leerer Platzhalter für Anweisungen.
Ich möchte Ihnen ein Beispiel geben, das dies besser verdeutlichen wird.

>>> 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
1
Walk

Betrachten Sie es so: 

Pass: Python arbeitet rein auf Einrückung! Im Gegensatz zu anderen Sprachen gibt es keine leeren geschweiften Klammern. 

Wenn Sie also nichts tun möchten, falls eine Bedingung zutrifft, gibt es keine andere Option als "Durchlauf". 

Weiter: Dies ist nur bei Schleifen nützlich. Falls Sie für einen Bereich von Werten die restlichen Anweisungen der Schleife nicht ausführen möchten, nachdem diese Bedingung für diesen bestimmten Durchgang wahr ist, müssen Sie Weiter verwenden. 

0
Vaishali