Darauf haben viele Entwickler und Entwicklerinnen gewartet. Bis zur heute erschienenen Version 3.10 der Programmiersprache Python, musste man sich mit if/elif-Konstrukten behelfen, um das Switch-Case-Statement abzubilden. Bei Python 3.10 nennt sich dieses Statement nun match.
Hier ein Beispiel:
def http_error(status):
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case 401 | 403 | 404:
return 'Not allowed'
case _:
return "Something else"
Das oben gezeigte Beispiel prüft den Inhalt der Variable status auf verschiedene Inhalte. Dies geschieht mit einer Reihe von case Statements. Der else-Fall wird mit case _ abgebildet. Die zu prüfenden Literale können mit dem OR-Operator | verbunden werden. Das match-Statement kann mit verschiedenen Datentypen umgehen, wie zum Beispiel Sequenzen (Listen, Tupel etc.), Mapping-Strukturen (z.B. Wörterbücher), primitive Datentypen oder Klasseninstanzen. In der Dokumentation zu Python 3.10 finden sich viele weitere Beispiele zur Verwendung des match-Statements.
Welche Neuerungen ansonsten mit Version 3.10 erschienen sind, findet man in der Quelle:
Sehr schön 😀
Wie viele sich wohl geärgert haben, sich mit "if/elif-Konstrukten" herumschlagen zu müssen, weil der Python-Erfinder an diesem Konstrukt festhielt - Endlich. Mich hat es vor vielen Jahren davon abgehalten, ein Problem mit Python zu lösen
Tatsächlich gab es schon das Idiom ein dict mit Funktionen als Werte zu nutzen:
oder mit dem call im dict oder in diesem Fall einfach nur ein dict.
Das wirklich coole neue an match ist, dass es eher vergleichbar mit funktionalen Sprachen oder mit Rusts match ist und man Objekte vergleichen und dabei Variablen setzen kann und so abgefahrene Dinge, wie Textadventures super kompakt schreiben kann, weil bsw. folgender code geht (siehe Tutoria/PEP636/https://www.python.org/dev/peps/pep-0636/):
(Sorry für die komische Formatierung, die durch teilweise copy&paste aus dem Artikel entstand)