Gibt es einen Unterschied zwischen “Pass” und “Continue” in einer for-Schleife in Python?

Lesezeit: 4 Minuten

Benutzeravatar von Aufwind
Aufwind

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 mir bewusst sein?

  • @S.Lott: Das Beispiel: while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C) in dem Python-Dokumente verwirrt mich in der Art, dass ich es nicht klar fand, ob es sich in diesem Fall gleich verhält oder etwas anderes beabsichtigt war. Der erste Satz “Die Pass-Anweisung tut nichts.” charakterisiert alle Antworten auf meine Frage, aber irgendwie ist es mir nicht aufgefallen.

    – Aufwind

    28. Februar 2012 um 15:52 Uhr


Benutzeravatar von Sven Marnach
Sven Marnach

Ja, die machen ganz unterschiedliche Sachen. pass tut einfach nichts, während continue fährt mit dem nächsten Schleifendurchlauf fort. In Ihrem Beispiel würde der Unterschied deutlich, wenn Sie nach dem eine weitere Anweisung hinzufügen würden if: Nach der Ausführung pass, würde diese weitere Anweisung ausgeführt werden. Nach continuewü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

  • ich stimme deiner antwort voll und ganz zu. aber ich habe noch eine Frage zum Pass-Schlüsselwort. Wird es benötigt? und benötigt, aber warum? Danke schön

    – Hardik Gajjar

    9. November 2015 um 2:52 Uhr

  • @HardikGajjar: Seit dem pass Das Schlüsselwort tut nichts, es ist nur nützlich, wenn Sie syntaktisch eine eingerückte Suite benötigen, aber nichts tun möchten. Ein gängiges Beispiel ist, wenn Sie eine Ausnahme ignorieren möchten, verwenden Sie except SomeException: pass. Es gibt auch viele andere Anwendungsfälle. Sie würden dafür nicht unbedingt ein Schlüsselwort benötigen, da Sie jede andere Anweisung verwenden könnten, die nichts bewirkt (z 0 ist eine vollkommen gültige Aussage, die keine Wirkung hat), aber wenn Sie ein Schlüsselwort dafür haben, können Sie deutlicher sagen, dass Sie nichts tun wollen.

    – Sven Marnach

    11. November 2015 um 9:04 Uhr

  • @SvenMarnach ist es stilistisch verpönt Ausnahmen mit zu behandeln pass ?

    – 3pitt

    22. März 2018 um 19:31 Uhr

  • @MikePalmice Überhaupt nicht.

    – Mattwmaster58

    24. März 2018 um 19:24 Uhr

  • Das Schlüsselwort „pass“ kann auch in Skelettcodes verwendet werden, die jemand an einen Mitarbeiter weiterleiten kann, um den Fehler zu vermeiden, den der Python-Interpreter anzeigt, falls Sie eine Verzweigungsanweisung (Schleifen, Bedingungen, Funktionen) leer lassen, damit der Interpreter und nicht unterbricht Der Mitarbeiter kann die Standardklassen oder Funktionsdefinitionen erhalten, die von anderen Mitarbeitern gleichzeitig verwendet werden könnten, um an einem Open-Source-Projekt oder einem anderen Projekt zu arbeiten, das eine Zusammenarbeit beinhaltet.

    – Syed M. Abbas Haider Taqvi

    21. September 2022 um 7:10 Uhr


Ja, es gibt einen Unterschied. continue zwingt die Schleife, bei der nächsten Iteration zu beginnen, während pass bedeutet “hier ist kein Code zum Ausführen vorhanden” und wird durch den Rest des Schleifenkörpers fortgesetzt.

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 zurück zum Anfang der Schleife. pass wird die Bearbeitung fortsetzen.

Wenn der Pass am Ende der Schleife ist, ist der Unterschied vernachlässigbar, da der Fluss ohnehin nur zum oberen Ende der Schleife zurückkehren würde.

Benutzeravatar von Joby Wilson Mathews
Joby Wilson Mathews

Unterschied zwischen Pass und Continue in einer For-Schleife:

vquBU

Warum also Python übergeben?

Wenn Sie eine leere Klasse, Methode oder einen leeren Block erstellen möchten.

Beispiele:

class MyException(Exception):
    pass


try:
   1/0
 except:
   pass

ohne ‘pass’ in den obigen Beispielen wird IndentationError ausgelöst.

In Ihrem Beispiel wird es keinen Unterschied geben, da beide Anweisungen am Ende der Schleife stehen. pass ist einfach ein Platzhalter, da es nichts tut (it geht vorbei Ausführung zur nächsten Anweisung). continueauf der anderen Seite, hat einen bestimmten Zweck: Es weist die Schleife an fortsetzen als hätte es gerade neu gestartet.

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

unterscheidet sich sehr von

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

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 Anweisungsplatzhalter.
Ich möchte Ihnen lieber ein Beispiel geben, das dies besser verdeutlicht.

>>> some_list = [0, 1, 2]
... 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

Benutzeravatar von froadie
weit

Ja, es gibt einen Unterschied. Continue überspringt tatsächlich den Rest der aktuellen Iteration der Schleife (kehrt zum Anfang zurück). Pass ist eine leere Anweisung, die nichts bewirkt.

Siehe die Python-Dokumente

1440450cookie-checkGibt es einen Unterschied zwischen “Pass” und “Continue” in einer for-Schleife in Python?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy