top of page

Neuerungen der Python Version 3.10

Aktualisiert: 7. Juni 2021

Vor Kurzem wurde die erste Beta Version (3.10.0b1) von Python 3.10 veröffentlicht. Ein Grund für uns sich die neuen Funktionen und Änderungen etwas genauer anzugucken. In diesem Blog-Artikel stellen wir euch, die aus unserer Sicht, zwei interessantesten Veränderungen der Programmiersprache vor.

Eine ausführliche Beschreibung der Veränderungen, im Vergleich zur Version 3.9, findet ihr auch auf der offiziellen Python Seite: https://docs.python.org/3.10/whatsnew/3.10.html


Structural Pattern Matching

Die wohl größte und gleichzeitig umstrittenste Änderung an der Programmiersprache Python bringt das sogenannte Structural Pattern Matching mit sich, welches einen Ausdruck mit vorgegebenen Mustern vergleicht und je nach Übereinstimmung einen anderen Programmcode ausführt. In seiner einfachsten Form gleicht diese Funktion, den aus anderen Programmiersprachen (z.B. C/C++, Java oder JavaScript) bekannten Switch/Case Anweisungen und wurde daher insbesondere von Programmierer*innen, die bereits eine andere Sprache gelernt haben, immer wieder vermisst.

In Python kommt hierfür das neue Schlüsselwort match zum Einsatz, welches den zu vergleichenden Ausdruck angibt. Anschließend werden die Muster mit dem Schlüsselwort case definiert. Wie bei anderen Kontrollstrukturen wird die einleitende Zeile mit einem Doppelpunkt abgeschlossen und die auszuführenden Programmzeilen eingerückt dargestellt.

zahl = 2

match zahl:
    case 1:
        print("Die Zahl ist 1")
    case 2:
        print("Die Zahl ist 2")
    case _:
        print("Die Zahl ist nicht 1 oder 2")

Case mit einem Unterstrich case _: , wird ausgeführt sofern keine andere Übereinstimmung gefunden wurde. Diese Option ist also vergleichbar mit dem else einer if-Bedingung.


Im vorliegenden Fall kommt schnell die Frage auf, warum man das Problem nicht auch genauso gut mit if-else-Bedingungen hätte lösen können. Betrachtet man jedoch die weiteren möglichen Funktionen des Structural Pattern Matching wird schnell deutlich, wie mächtig die Mustererkennung ist. Viele Problemstellungen lassen sich dadurch deutlich eleganter lösen. Gerade beim erkennen von Benutzereingaben (z.B. bei einem Chatbot oder in einem Text-Adventure) entstehen schnell komplexe und verschachtelte if/else-Bedingungen, welche mit den neuen Möglichkeiten durch das Structural Pattern Matching deutlich leichter gelöst werden könnten.


In einem offiziellen Tutorial zum Structural Pattern Matching (https://www.python.org/dev/peps/pep-0636/) werden viele dieser Anwendungsfälle mit Beispielen beschrieben. So können Benutzereingaben in einem Text-Adventure mehrere relevante Informationen beinhalten, z.B. "Was soll getan werden" und welche zusätzlich Information ist dafür nötig ("gehe nach Norden"). Genau eine solche Problemstellung wird in dem Tutorial anhand eines Beispiels verdeutlicht:

match command.split():
    case ["go", ("north" | "south" | "east" | "west") as direction]:
        current_room = current_room.neighbor(direction)

Sofern das erste Schlüsselwort "go" ist, kann das folgende Wort eins aus dem Tupel ("north" | "south" | "east" | "west") sein. Zusätzlich wird die Himmelsrichtung in der Variablen direction gespeichert und kann im folgenden Programmcode verwendet werden.


Weitere solcher Anwendungsfälle werden wir euch demnächst in einer Live Coding Session vorstellen und sobald die neue Python Version offiziell veröffentlicht wurde, natürlich auch in unsere Kurse integrieren.


Genauere Angaben zu Fehlern

Insbesondere für Einsteiger*innen ist es häufig schwierig die durch Python ausgegebenen Fehlermeldungen zu deuten und die Ursache des Fehlers zu finden. Viele der ausgebebenen Fehlermeldungen sind relativ allgemein formuliert und benötigen etwas Erfahrung in der Interpretation. Um Fehlermeldungen besser zu verstehen und die Ursache zu finden, gibt es in der kommenden Version viele kleine Verbesserungen.