Die pass-Anweisung in Python

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)