So geht modernes Python

24.06.2024 von Serdar Yegulalp
Lesen Sie, wie Ihr Python-Code von den aktuellsten und leistungsfähigsten Features der Sprache profitiert.
Python entwickelt sich mit jeder Version weiter. Wenn Ihre Applikationen in den Genuss der besten neuen Funktionen kommen sollen, sollten Sie diese vier Kernbereiche verinnerlichen.
Foto: Heiko Kiera | shutterstock.com

Obwohl Python inzwischen bereits 33 Jahre auf dem Buckel hat, verbreitet sich die Programmiersprache erst seit einigen Jahren explosionsartig - und entwickelt sich beständig weiter. Dabei sind einige Features über den Lauf der Jahre unverändert geblieben und mit jeder neuen Python-Version einige neue hinzugekommen.

In diesem Artikel stellen wir Ihnen die wichtigsten Konzepte vor, die Sie durchdringen sollten, wenn Sie moderne Python-Anwendungen programmieren wollen, die sich die gewinnbringendsten Idiome, Konzepte und Funktionen der Programmiersprache zunutze machen. Die folgenden vier Bereiche sind besonders relevant, um das in der Praxis umzusetzen.

1. Type Hints

Die kürzlich in Python eingeführte Type-Hinting-Syntax ermöglicht den Einsatz von Linter- und Code-Quality-Tools von Drittanbietern. Diese durchforsten Ihren Code vor der Laufzeit auf mögliche Fehler. Je mehr Python-Code Sie erstellen und mit anderen teilen möchten, desto wahrscheinlicher ist es, dass Sie (und die, mit denen geteilt wird) davon profitieren, Type Hints zu verwenden. Da mit jeder neuen Python-Version raffiniertere und leistungsfähigere Type Annotations Einzug halten, tun Sie gut daran, sich regelmäßig mit dem Thema zu beschäftigen - auf lange Sicht haben Sie so weniger Schwierigkeiten, Schritt zu halten.

Wichtig ist in Sachen Type Hinting jedoch vor allem, dass es sich um ein optionales Feature handelt - das nicht jedes Python-Projekt zwingend benötigt. Sinn machen Type Hints insbesondere bei größeren Projekten - weniger im Fall von Wegwerfskripten, die aus 50 Codezeilen bestehen. Darüber hinaus werden Type Hints zur Runtime nicht erzwungen. Sie können dazu jedoch die Datenvalidierungs-Bibliothek Pydantic verwenden, die sich im Python-Umfeld bereits vielfach bewährt hat.

2. Virtuelle Umgebungen & Package Management

Für einfache Projekte und Dev-Aufgaben, die weniger anspruchsvoll sind, empfiehlt sich die Nutzung des Python-internen venv-Tools, um Projekte und Anforderungen getrennt zu halten. Die jüngsten Entwicklungsfortschritte in Sachen Python eröffnen allerdings weitere Möglichkeiten:

Wenn Sie neue Projekte erstellen, die in einer Teamumgebung bearbeitet oder an andere weitergegeben werden sollen (etwa über PyPI), sollten Sie das moderne pyproject.toml-Format für Ihre Anforderungen und die Projektkonfiguration sowie das damit verwendete Layout nutzen. Sie können trotzdem noch requirements.txt verwenden - pyproject.toml deckt jedoch einen größeren Use-Case-Bereich ab und macht Ihre Projekte zukunftskompatibel.

3. Neue Syntax

Nicht nur das Ökosystem von Python - auch die Sprache selbst entwickelt sich regelmäßig weiter. Das hat sich in den letzten Versionen der Programmiersprache insbesondere in neuen, syntaktischen Konstruktionen niedergeschlagen, die es ermöglichen, prägnanter und performanter zu programmieren.

Dabei sind drei neue Erweiterungen der Python-Syntax besonders erwähnenswert:

4. Testing

Geht es darum, Tests für Codebasen zu schreiben, verhält es sich ein bisschen wie mit der Nutzung von Zahnseide: Es besteht Einigkeit darüber, dass das sinnvoll ist. Trotzdem wenden es nur wenige regelmäßig an - richtig macht es eine noch kleinere Zahl. Das sollte sich - zumindest, wenn es um Testing geht - künftig ändern, denn die aktuellen Tools für Python in diesem Bereich machen es einfacher denn je, Test-Suiten aufzusetzen.

Dabei verfügt Python zwar über das integrierte Framework unittest - dieses ist allerdings mit Blick auf Design und Behaviors ziemlich altbacken. Als gängiger Ersatz hat sich das Framework Pytest etabliert, das im Vergleich deutlich flexibler ist (Sie können Tests für jeden Teil Ihres Codes deklarieren, nicht nur ein Subset) und außerdem weit weniger Boilerplate-Code erfordert. Die Funktionalitäten von Pytest lassen sich zudem über diverse Add-Ons erweitern - beispielsweise, um auch asynchronen Code zu testen.

Ein anderer wichtiger Testing-Aspekt ist die Code Coverage. Sie gibt Auskunft darüber, welchen Bereich der Codebasis die Tests tatsächlich abdecken. Das Coverage-Modul kann diese Anforderung abdecken - Pytest enthält ein entsprechendes Plugin. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.