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