In Python bewirkt die pass-Anweisung nichts. Sie wird verwendet, wenn man syntaktisch etwas schreiben müsste, aber nichts tun muss.
Dieser Artikel beschreibt zunächst, was pass in Python bedeutet.
- Was bedeutet die pass-Anweisung in Python?
- Was ist der Unterschied zwischen pass und continue.
Danach betrachten wir die Verwendung der pass-Anweisung anhand konkreter Beispiele.
- Definition einer leeren Funktion oder Klasse mit pass
- Erstellen einer leeren Datei mit pass
- Verdeutlichen, dass in if … elif … else … mit pass nichts getan wird
- Bei der Ausnahmebehandlung (exception handling) nichts tun mit pass
Was bedeutet die pass-Anweisung in Python
Wie man in der offiziellen Dokumentation sehen kann, bewirkt die pass-Anweisung nichts.
pass ist eine Null-Operation – wenn sie ausgeführt wird, passiert nichts. Sie ist als Platzhalter nützlich, wenn eine Anweisung syntaktisch erforderlich ist, aber kein Code ausgeführt werden muss.“ – 7. Simple statements – The pass statement — Python 3.9.1 documentation
In Python kann der Inhalt in der def-Anweisung der Funktionsdefinition und der if-Anweisung der bedingten Verzweigung nicht weggelassen werden. Man kann die pass-Anweisung verwenden, wenn man etwas schreiben muss, aber nichts zu tun ist.
Der Unterschied zwischen pass und continue
Wenn die continue-Anweisung in der for- oder while-Schleife verwendet wird, wird zum nächsten Schritt übergegangen, ohne dass der nach continue geschriebene Code ausgeführt wird.
for i in range(3):
print(i)
if i == 1:
continue
print('CONTINUE')
# 0
# 1
# 2
Die pass-Anweisung hingegen bewirkt nichts, so dass der nach der pass-Anweisung geschriebene Code ausgeführt wird.
for i in range(3):
print(i)
if i == 1:
pass
print('PASS')
# 0
# 1
# PASS
# 2
Definition einer leeren Funktion oder Klasse mit pass
Wenn man bereits eine Funktion oder Klasse definieren möchte (oder muss), die Implementierung aber erst später erfolgt, dann benötigt man eine leere Funktion oder Klasse.
Allerdings wird ein Fehler ausgelöst, wenn in der def-Anweisung nichts geschrieben wird.
# def empty_func():
# SyntaxError: unexpected EOF while parsing
Man kann eine leere Funktion definieren, die die pass-Anweisung enthält, und daher nichts macht.
def empty_func():
pass
Bei Klassen lässt sich der gleiche Effekt erreichen.
# class EmptyClass():
# SyntaxError: unexpected EOF while parsing
class EmptyClass():
pass
Obwohl es in PEP8 (E701) nicht empfohlen wird, führt das Schreiben von pass nach einem Doppelpunkt : nicht zu einem Fehler.
def empty_func_one_line(): pass
class EmptyClassOneLine(): pass
Erstellen einer leeren Datei mit pass
Um eine neue Datei zu erstellen, verwendet man with und open() im Schreibmodus w.
Normalerweise wird der Inhalt der Datei mit der Methode write() geschrieben, aber mit der Anweisung pass kann eine leere Datei erstellt werden.
with open('temp/empty.txt', 'w'):
pass
Man kann alles auch in einer Zeile schreiben, wie oben beschrieben.
with open('temp/empty.txt', 'w'): pass
Verdeutlichen, dass in if … elif … else … mit pass nichts getan wird
Man kann den Inhalt der einzelnen Blöcke in if … elif … else … nicht auslassen.
Deshalb verwendet man die pass-Anweisung, wenn man die Implementierung aufschieben will oder wenn es einfacher ist, die Absicht des Codes zu verstehen, indem explizit angegeben wird, dass nichts getan wird.
a = 3
if a % 2 == 0:
print('Even')
else:
pass
Beim exception handling nichts tun mit pass
Wenn eine Exception auftritt, wird eine Fehlermeldung ausgegeben, und der Prozess wird beendet.
def divide(a, b):
print(a / b)
# divide(1, 0)
# ZeroDivisionError: division by zero
Man kann try verwenden, um eine Ausnahme abzufangen und Maßnahmen zu ergreifen. Wenn eine Ausnahme abgefangen wird, wird der Prozess fortgesetzt, ohne beendet zu werden.
def divide_exception(a, b):
try:
print(a / b)
except ZeroDivisionError as e:
print('ZeroDivisionError: ', e)
divide_exception(1, 0)
# ZeroDivisionError: division by zero
Man verwendet die Anweisung pass, wenn man eine Exception abfängt und nichts tun möchte. Auch wenn eine Exception ausgelöst wird, kann der Prozess fortgesetzt werden, ohne dass etwas geschieht.
def divide_exception_pass(a, b):
try:
print(a / b)
except ZeroDivisionError as e:
pass
divide_exception_pass(1, 0)