Posted on 2 Comments

Python 3.10: neue Version mit interessanten Neuerungen

Python 3.10: neue Version mit interessanten Neuerungen

Python zählt ohne Zweifel zu den beliebtesten Programmiersprachen. Programmierer in aller Welt verwenden diese, um Programme für Webserver, Webanwendungen, Desktop-Programme und viele weitere Softwareprodukte zu erstellen. Auch ein großer Teil der Programmieranfänger entscheidet sich für Python – insbesondere da die einfache Syntax zu einem schnellen Lernfortschritt führt.

Wie bei jeder Programmiersprache erscheinen auch bei Python immer wieder neue Versionen. Diese bringen stets einige Verbesserungen mit sich und passen die Sprache an aktuelle Anforderungen an. Gelegentlich kommt es dabei zu großen Unterschieden – beispielsweise beim Sprung von Python 2 zu Python 3. In den meisten Fällen handelt es sich jedoch nur um kleinere Anpassungen, die hauptsächlich für fortgeschrittene Programmierer von Bedeutung sind.

Im Oktober 2021 erschien mit Python 3.10 jedoch eine Version, die auch für Programmierer mit wenig Erfahrung eine wichtige Neuerung mit sich brachte. Dabei handelt es sich um das match-Statement, das viele neue Möglichkeiten für die Programmgestaltung bietet. Außerdem wurden die Fehlermeldungen so überarbeitet, dass sie nun eine bessere Hilfestellung bieten. Hinzu kommen noch einige weitere Änderungen, die ebenfalls von Interesse sein könnten – wenn auch vornehmlich für etwas fortgeschrittenere Programmierer. Es ist also durchaus lohnenswert, einen genaueren Blick auf die neue Python-Version 3.10 zu werfen.

Python Kompendium 19.99 € Verfügbar In den Warenkorb

Das match-Statement

Programmierer, die zuvor schon mit anderen Sprachen gearbeitet haben und auf Python umsteigen, fragen sich meistens früher oder später: „Wo ist eigentlich das switch-Statement?“ Dieses erlaubt es in den meisten Programmiersprachen, eine Variable auf Gleichheit zu verschiedenen Werten zu überprüfen. Dieses Statement ist zwar nicht unbedingt notwendig – es ist stets möglich, es durch eine Kombination aus if, elif (bzw. else if, je nach Sprache) und else zu ersetzen. Allerdings wird durch die Verwendung von switch der Programmcode etwas kürzer und übersichtlicher.

Bislang verfügte Python über kein solches Statement. Die Programmierer mussten also stets eine etwas umständlichere Konstruktion verwenden. Mit Python 3.10 wurde diese nun jedoch hinzugefügt. Zwar trägt sie nicht den Namen switch, sondern match, die Funktionsweise und Syntax sind jedoch beinahe identisch zum switch-Statement anderer Sprachen.

Zunächst geben wir ein kleines Beispielprogramm an, das zeigt, wie wir eine entsprechende Struktur bisher umsetzen mussten. Dieses enthält eine Variable, die den Wochentag angibt, und vergleicht sie dann mit allen vorhandenen Möglichkeiten und gibt eine entsprechende Nachricht aus:

https://gist.github.com/8d2eb9f098505445d50fbae08ebdf63e.git

Abb. 1: Die Ausführung des Programms

Nun ändern wir den Code ab und verwenden das neue match-Statement. Das Programm erfüllt genau die gleiche Aufgabe, ist aber bei weitem übersichtlicher gestaltet:

https://gist.github.com/235bf20c7814313f660f2080e22d5ba0.git

Bevor wir dieses Programm ausführen können, ist es notwendig, den neuen Python-Interpreter herunterzuladen und als Standard vorzugeben. Wie Sie dabei vorgehen, erklären wir noch am Ende dieses Artikels. In der folgenden Abbildung ist zu sehen, dass wir uns zunächst vergewissern, ob unser Programm nun tatsächlich Python 3.10 nutzt, indem wir die Version abfragen. Danach geben wir das Programm aus. Das Ergebnis ist dabei genau das gleiche wie beim letzten Beispiel:

Abb. 2: Die Ausgabe des Programms mit dem match-Statement
Python 3 Programmieren für Einsteiger 13.90 € Verfügbar In den Warenkorb

Pattern Matching im match-Statement

Python hat mit der Einführung des match-Statements nicht nur eine Lücke zu den meisten anderen Programmiersprachen geschlossen, sondern auch ein neues Feature eingeführt, das in vielen Sprachen bislang nicht vorhanden ist: das Pattern Matching. Dabei wird nicht überprüft, ob eine Variable einen bestimmten Wert aufweist, sondern ob eine Datenstruktur einem bestimmten Muster entspricht.

Um das an einem Beispiel zu verdeutlichen, gehen wir davon aus, dass wir die Adressen von Personen in einem Dictionary gespeichert haben. Bei der ersten Person haben wir für den Namen, die Straße und die Hausnummer jeweils ein eigenes Paar aus Schlüsselbegriff und Wert erstellt:

person1 = {"name": "Michael Müller",
	"strasse": "Hauptstraße",
	"hausnr": 57}

Für die zweite Person haben wir zwar die gleichen Werte erfasst. Allerdings haben wir hier nur zwei Felder erstellt – für den Namen und für die Adresse. In das Feld für die Adresse haben wir nun jedoch ein weiteres Dictionary eingefügt – für die Straße und für die Hausnummer:

person2 = {"name": "Franziska Mayer",
	"adresse": {"strasse": "Bahnhofstraße",
			"hausnr": 81}}

Solche Unterschiede kommen in der Praxis sehr häufig vor, wenn man mit Daten aus verschiedenen Quellen arbeitet. Das macht es schwierig, die Werte zu verarbeiten. Wenn wir beispielsweise für beide Datensätze die Straße ausgeben wollen, sind dafür ganz unterschiedliche Befehle notwendig.

Das Pattern Matching erlaubt es nun jedoch, die Verarbeitung an die Strukturen anzupassen. Das lässt sich optimal mit dem match-Statement kombinieren. Dabei können wir die beiden Strukturen vorgeben und für alle Werte eine Variable bestimmen. Das folgende Beispiel zeigt, dass es damit ganz einfach ist, die Straße für beide Strukturen in einer Schleife auszugeben:

https://gist.github.com/b1c1f86ae64aeb420afc869d7c5bc873.git

Abb. 3: Die Ausgabe der Straße für beide Dictionaries

Vereinfachung der Syntax

Die Einführung des match-Statements stellt ohne Zweifel die wichtigste Neuerung bei der Einführung von Python 3.10 dar. Es kam jedoch noch zu vielen weiteren kleinen Verbesserungen, die allerdings vorwiegend für fortgeschrittene Programmierer von Bedeutung sind. Dabei handelt es sich nicht um neue Features. Stattdessen wurde die Syntax etwas angepasst, um die Schreibweise zu erleichtern. Damit Sie einen Eindruck von diesen Anpassungen erhalten, wollen wir hierfür ein kleines Beispiel vorstellen.

Dafür wählen wir den sogenannten Context Manager. Dieser erlaubt es, verschiedene Details für die Ausführung eines anderen Befehls auszugeben. In diesem Beispiel wollen wir beispielsweise eine Datei öffnen und den Inhalt in eine andere Datei schreiben. Wenn wir direkt innerhalb des Befehls angeben, um welche Dateien es sich dabei handelt, wird der Code sehr unübersichtlich. Daher nutzen wir den Content Manager, um die Dateien bereits im Vorfeld festzulegen. So wird der eigentliche Befehl wesentlich kompakter. Das konnte bei den bisherigen Versionen beispielsweise so aussehen:

with open('adressen.txt', 'r') as datei1, open('kopie.txt', 'w') as datei2:
    datei2.write(datei1.read())

Dieser Code dient dazu, die Inhalte der Datei adressen.txt in die Datei kopie.txt zu kopieren. Dazu öffnen wir die beiden Dateien nicht in separaten Befehlen. Stattdessen geben wir sie als Kontext für den darauf folgenden Befehl vor. Diese Syntax ist sehr elegant und kompakt. Allerdings ist die erste Befehlszeile selbst in unserem einfachen Beispiel bereits recht lang. Wenn wir weitere Werte für unseren Kontext benötigen, wird der Ausdruck schnell unübersichtlich. Eine Unterteilung in mehrere Zeilen war bislang nicht vorgesehen. Die einzige Möglichkeit bestand darin, den Zeilenumbruch durch das Voranstellen eines Backslashs zu ignorieren. Das entspricht jedoch nicht dem eigentlichen Python-Stil.

Deshalb wurde hierbei nun eine kleine Verbesserung eingeführt. Fortan ist es möglich, alle einzelnen Werte für den Kontext in eine Klammer zu stellen. Das macht es möglich, jeden einzelnen Ausdruck in eine eigene Zeile zu stellen:

with (open('adressen.txt', 'r') as datei1,
	open('kopie.txt', 'w') as datei2):
    datei2.write(datei1.read())

Das stellt sicherlich nur ein kleines Detail dar, das keine allzu großen Auswirkungen hat. Durch viele solche Änderungen wird die Programmiersprache jedoch ständig optimiert.

Überarbeitung der Fehlermeldungen

Gerade für Programmieranfänger ist es sehr interessant, dass bei der neuesten Python-Version auch die Fehlermeldungen überarbeitet wurden. Diese waren bislang nicht immer besonders nachvollziehbar. Deshalb wurde es häufig nicht direkt klar, wo der Fehler lag. In diesem Bereich kam es nun jedoch zu einer wesentlichen Verbesserung.

Das wird deutlich, wenn wir ein Programm ausführen, in dem wir vergessen haben, eine Klammer zu schließen:

print("Hallo"

Bei Python 3.9 erschien dabei bislang folgende Nachricht:

SyntaxError: unexpected EOF while parsing

Daraus geht nicht klar hervor, welchen Fehler das Programm enthält. Wenn wir es nun jedoch mit Python 3.10 ausführen, erscheint folgende Nachricht:

SyntaxError: '(' was never closed

Der Fehler ist nun also gerade für einen Programmieranfänger sehr viel leichter zu finden. Auch bei vielen weiteren Fehlern wurde die Fehlernachricht verbessert.

Wie können Sie auf die neue Version umsteigen?

Wenn Sie die Vorteile von Python 3.10 überzeugt haben, stellt sich noch die Frage, wie Sie die neue Version nutzen können. Dazu müssen Sie im Prinzip genau wie bei der Erstinstallation vorgehen. Besuchen Sie zunächst die folgende Seite:

https://www.python.org/downloads/

Hier können Sie stets die aktuelle Version herunterladen. Wenn Sie einen Windows-Rechner verwenden, müssen Sie lediglich den Installer starten. Dieser aktualisiert die Python-Version dann automatisch. Um die neue Version als Standard vorzugeben, kann es anschließend noch notwendig sein, die Pfadvariablen anzupassen. Das ist auch bei Linux oder macOS der Fall.

Fazit: Python 3.10 überzeugt in erster Linie durch das neue match-Statement

Python 3.10 bringt viele Verbesserungen mit sich. Anders als bei den meisten anderen neuen Versionen sind einige davon auch für Programmieranfänger interessant. Hierbei ist insbesondere das match-Statement zu nennen. Dieses macht es wesentlich einfacher, eine Variable auf Gleichheit zu verschiedenen Werten zu überprüfen. Auch die Überarbeitung der Fehlermeldungen erleichtert den Einstieg in das Programmieren mit Python deutlich. Wenn Sie bereits damit begonnen haben, Python zu lernen oder dies in nächster Zeit in Angriff nehmen möchten, lohnt es sich daher, den neuesten Python-Interpreter herunterzuladen und von allen dargestellten Neuerungen zu profitieren.

Ähnliche Produkte

2 Kommentare zu “Python 3.10: neue Version mit interessanten Neuerungen

  1. In der mobile Version des Blogs fehlen die Programmbeispiele fűr if-then-else und match.
    Browser: Chrome, Android 10

    1. Guten Tag,

      Vielen Dank für Ihren Hinweis!

      Wir haben zusätzlich für die Leser vom Handy noch den direkten Github-Link hinzugefügt. Wegen einer technischen Störung werden die Gits in der mobilen Version in unserem Blogbeitrag leider nicht angezeigt. Wir arbeiten aber daran, um diese Störung schnellstmöglich zu beheben.

      Beste Grüße,
      Olena Zakrytna

Schreibe einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.