目次
- 1 1. Einführung
- 2 2. Warum Python keine Switch-Anweisung hat
- 3 3. Beispiel für die Verwendung von if-elif-else
- 4 4. Bedingte Verzweigungen mit dem Dictionary‑Typ
- 5 5. Neue Funktionen in Python 3.10: Einführung der match-case-Anweisung
- 6 6. Anwendungsbeispiele für match-case
- 7 7. Vergleich von if-elif-else, Dictionary‑Typ und match-case
- 8 8. Zusammenfassung
1. Einführung
Python wird wegen seiner Einfachheit und intuitiven Syntax von vielen Programmierern geschätzt, aber manche sind überrascht, dass es keine „switch-case“-Syntax wie in anderen Sprachen gibt. Deshalb muss man in Python „if-elif-else“ oder das „Dictionary“-Objekt verwenden, um ähnliche Abläufe zu realisieren. In diesem Artikel werden die traditionellen Bedingungszweige in Python, die Alternative mit Dictionaries und die neue „match-case“-Anweisung, die mit Python 3.10 eingeführt wurde, Schritt für Schritt erklärt. Dadurch können Sie effiziente Methoden der Bedingungslogik in Python meistern und sie in der Praxis beim Programmieren einsetzen.2. Warum Python keine Switch-Anweisung hat
Der Grund, warum Python keine Switch‑Case‑Anweisung verwendet, liegt in seiner Einfachheit und Lesbarkeit. Die Designer von Python streben danach, die Sprache so knapp wie möglich zu halten und Wiederholungen sowie redundante Syntax zu vermeiden. Obwohl Switch‑Anweisungen in anderen Sprachen nützlich sind, kann man in Python dieselbe Funktionalität mit „if‑elif‑else“-Anweisungen oder Dictionaries erreichen, sodass das Hinzufügen einer Switch‑Anweisung nicht nötig ist. Tatsächlich wird in der offiziellen Python‑Dokumentation angegeben, dass man die Funktionalität einer Switch‑Anweisung mit if‑elif‑else‑Anweisungen abdecken kann. Der folgende Code ist ein Beispiel für eine Switch‑Anweisung in C und ähnlichen Sprachen.switch (value) {
case 1:
printf("Value is 1");
break;
case 2:
printf("Value is 2");
break;
default:
printf("Other value");
}
In Python kann man das wie folgt umschreiben.value = 1
if value == 1:
print("Value is 1")
elif value == 2:
print("Value is 2")
else:
print("Other value")
Auf diese Weise kann Python Bedingungszweige auch ohne Switch‑Anweisung einfach umsetzen.3. Beispiel für die Verwendung von if-elif-else
Die grundlegendste Methode, um in Python Verzweigungen zu implementieren, ist die „if-elif-else“-Anweisung. Sie ist sehr effektiv, wenn unterschiedliche Aktionen basierend auf mehreren Bedingungen ausgeführt werden sollen. Im Folgenden ein typisches Anwendungsbeispiel.value = 100
if value < 50:
print("Kleiner Wert")
elif value < 100:
print("Mittlerer Wert")
else:
print("Großer Wert")
In diesem Code wird je nach Wert der Variablen value
eine unterschiedliche Meldung ausgegeben. Die if-elif-else-Anweisung ermöglicht eine einfache und intuitive Verzweigung.Probleme bei zunehmender Anzahl von Bedingungen
Allerdings kann der Code unübersichtlich werden, wenn die Verschachtelung von if-elif-else-Anweisungen zu tief wird. Besonders bei komplexen Bedingungen ist die im Folgenden vorgestellte Methode mit einem „Dictionary“-Ansatz nützlich.4. Bedingte Verzweigungen mit dem Dictionary‑Typ
Durch die Verwendung des Dictionary‑Typs in Python können Sie eine bedingte Verzweigung implementieren, die einer switch‑case‑Anweisung ähnelt. Der Dictionary‑Typ ist eine Datenstruktur, die Schlüssel‑Wert‑Paare speichert und mehrere Bedingungen kompakt darstellen kann. Im folgenden Beispiel wird das Ergebnis entsprechend der vom Benutzer eingegebenen Zahl angezeigt.numbers = {1: "eins", 2: "zwei", 3: "drei"}
value = int(input("Bitte geben Sie eine Zahl von 1 bis 3 ein: "))
if value in numbers:
print(f"Ausgewählte Zahl: {numbers[value]}")
else:
print("Bitte geben Sie eine Zahl von 1 bis 3 ein")
Auf diese Weise können Sie mit dem Dictionary‑Typ den Code kurz und lesbar halten, selbst wenn viele Bedingungen vorhanden sind.Vorteile des Dictionary‑Typs
Bedingte Verzweigungen mit dem Dictionary‑Typ behalten auch bei zunehmender Anzahl von Bedingungen eine hohe Lesbarkeit des Codes und erleichtern die Wartung – das ist ein großer Vorteil. Besonders wenn mehrere Operationen für einen Wert erforderlich sind, ist es effizienter als if‑elif‑else‑Anweisungen.5. Neue Funktionen in Python 3.10: Einführung der match-case-Anweisung
Die seit Python 3.10 eingeführte „match-case“-Anweisung hat eine Syntax, die der switch-case-Anweisung sehr ähnlich ist und ermöglicht es, mehrere Bedingungen kompakt zu schreiben. Diese neue Funktion ist besonders stark im Pattern Matching und verbessert die Lesbarkeit und Wartbarkeit des Codes im Vergleich zu herkömmlichen if‑elif‑else‑Anweisungen oder Methoden mit Dictionaries erheblich.Grundsyntax von match-case
Im Folgenden ein grundlegendes Anwendungsbeispiel für die match-case-Anweisung.def check_value(value):
match value:
case 1:
print("Eins wurde ausgewählt")
case 2:
print("Zwei wurde ausgewählt")
case _:
print("Ein Wert außer 1 oder 2 wurde ausgewählt")
In diesem Code wird je nach Wert der Variablen value
eine unterschiedliche Verarbeitung ausgeführt. case _
dient als Standardverarbeitung und wird ausgeführt, wenn keiner der Bedingungen entspricht.6. Anwendungsbeispiele für match-case
Die match-case-Anweisung eignet sich auch für komplexere Verzweigungen und Musterabgleiche. Zum Beispiel ist es möglich, Verarbeitungen basierend auf der Anzahl der Listenelemente oder dem Datentyp durchzuführen.match-case-Anweisung für mehrere Bedingungen
def process_data(data):
match data:
case [x, y]:
print(f"Die Liste enthält 2 Elemente: {x}, {y}")
case [x, y, z]:
print(f"Die Liste enthält 3 Elemente: {x}, {y}, {z}")
case _:
print("Die Anzahl der Listenelemente ist unterschiedlich")
In diesem Beispiel wird je nach Anzahl der Listenelemente eine unterschiedliche Verarbeitung durchgeführt. Die match-case-Anweisung zeichnet sich dadurch aus, dass sie mehrere Bedingungen und Muster einfach beschreiben kann.7. Vergleich von if-elif-else, Dictionary‑Typ und match-case
Jede Verzweigungsmethode hat ihre eigenen Vor‑ und Nachteile. Im Folgenden ist die Vergleichstabelle dargestellt.Methode | Vorteile | Nachteile |
---|---|---|
if-elif-else | Einfach und intuitiv | Bei vielen Bedingungen wird der Code komplex |
Dictionary‑Typ (dictionary) | Hohe Lesbarkeit, besonders bei vielen Bedingungen nützlich | Nicht alle Bedingungen lassen sich in ein Dictionary fassen |
match-case | Für mehrere Verzweigungen und Pattern Matching geeignet | Nur ab Python 3.10 verfügbar |