Anzeige
Anzeige
Analyse

Python 3.9 ist da – das sind die nennenswertesten Neuerungen

Die nächste Python-Version kommt mit Performance-Boosts, neuen String-Methoden, Dictionary-Union-Operatoren und mehr Konsistenz durch die Einführung einer neuen permanenten Binärschnittstelle für CPython.

3 Min.
Artikel merken
Anzeige
Anzeige

Bild: Sharaf Maksumov/ Shutterstock

Python, die nach dem britischen Comedy-Ensemble Monty Python benannte und neuerdings vor allem unter Data-Scientists beliebte Programmiersprache, hat jetzt mit Version 3.9 ein Versionsupdate erhalten. Der Release folgt einem neuen, ab jetzt jährlichen Release-Zyklus. Wir haben uns die Neuerungen genauer angeschaut.

Python wird performanter

Anzeige
Anzeige

Python hatte in vorherigen Versionsupdates bereits mit Performanzverbesserungen geglänzt. Python 3.9 kommt mit zwei großen Verbesserungen, die allerdings keine Breaking Changes darstellen. Zum einen findet das in Python 3.8 eingeführte vectorcallProtokoll vermehrt Verwendung. Indem das Protokoll sogenannte temporäre Objekte, die extra für einen Funktionsaufruf erstellt wurden, minimiert oder komplett eliminiert, sorgt vectorcall für bessere Performanz bei einigen vielgenutzten Funktionsaufrufen. Darunter die Python-Build-ins range, tuple, set, frozenset, list und dict.

Ebenfalls für einen Performanz-Zuwachs sorgt ein neuer Parser für die CPython-Laufzeitumgebung. Entworfen, um interne Inkonsistenzen im ursprünglichen Parser zu fixen, ist mehr Schnelligkeit eine nennenswerte Randerscheinung des Features, vor allem beim Parsen großer Mengen an Code.

Anzeige
Anzeige

Neue string- und dictionary-Funktionen

Die Manipulation sogenannter Common-Data-Types war immer schon eine der Stärken Pythons. Mit neuen Features für Strings und Dictionaries soll das ab Version 3.9 noch einfacher werden. Für Strings gibt es in Python 3.9 neue Methoden zum Entfernen von Prä- und Suffixen, ein Vorgang, der bisher viel manuelles Tweaken erfordert hatte. Für Dictionaries gibt es in der neuen Version zwei neue Union-Operatoren: einen zum Zusammenführen zweier Dictionaries und einen, der es erlaubt, den Inhalt eines Dictionaries mit dem eines anderen zu aktualisieren.

Anzeige
Anzeige

Neue Type-Operatoren

Bereits in vorherigen Versionen wurde der Support für sogenanntes Type-Hinting in Python erweitert. Das zielt vor allem auf sogenannte Linter und andere Code-Checking-Tools ab. Typen werden in Python nach wie vor nicht während der Laufzeit enforciert und es gibt auch keine Pläne, Python zur statisch typisierten Programmiersprache zu machen. Type-Hints tragen allerdings auch in dynamisch typisierten Sprachen zur „sprachlichen Konsistenz“ bei – wovon vor allem größere Codebases profitieren können.

Zwei neue Features für Type-Hinting und Typenannotationen fanden Eingang in Python 3.9. Zum einen sind Type-Hits für Listen und Dictionaries mit Version 3.9 nativ in Python verfügbar. Damit lassen sich etwa Listen als Listen ihres Typs beschreiben: List[int] beschreibt etwa eine Liste von Integern, bisher brauchtet ihr dafür die typing-Library. Eine weitere Neuerung, die Pythons Typing-Verhalten betrifft, sind flexible Funktions- und Variablenannotationen. Das bedeutet, ab Version 3.9 wird es möglich sein, mit Hilfe des Annotated Type den Typen einer Entität über Metadaten zu beschreiben, die während der Laufzeit ausgewertet werden können – oder mit Hilfe von Lintern schon vorher.

Anzeige
Anzeige

Annotated[int, ctype(„char“)] kann verwendet werden, um einen Integer zu beschreiben, der als Entität von Typ char in C betrachtet werden soll. Per Default würde Python mit dieser Information nichts weiter anfangen, das Feature zielt vor allem auf Linting-Tools ab.

Freshness unter der Haube

Neuer Lademechanismus für Importe

Internals sind eine Sache, an der mit jedem Versionsupdate gefeilt wird – auch in Version 3.9 wurden diesbezüglich einige Neuerungen umgesetzt. Zum einen wurde der Mechanismus, wie Module mit der Import-Maschinerie interagieren, überarbeitet. In C geschriebene Python-Erweiterungen sollen zukünftig von einem neuen Lademechanismus Gebrauch machen können, der ihr Verhalten bei einem Import an das regulärer Module angleicht. Folgende Module der Standardlibrary unterstützen das Verhalten:
_abc, audioop, _bz2, _codecs, _contextvars, _functools, _crypt, _json, _locale, operator, resource, time, _weakref.

Neue Binärschnittstelle für CPython

Zum anderen bringt der Release von Version 3.9 eine neue internale Binärschnittstelle – oder ABI – für CPython mit sich, die den gesamten Lebenszyklus von Python 3 überdauern soll. Bei vorherigen Versionen war es bisher so, dass große Revisionen ABI-inkompatibel mit ihren Vorgängern waren – mit der Folge, dass Extension-Module für jede neue Version rekompiliert werden mussten. Ab Version 3.9 sollen alle Erweiterungsmodule, die die neue stable ABI nutzen, über kommende Python-Versionen hinweg funktionieren. Folgende Module machen in Zukunft von der ABI Gebrauch: audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, zlib und termios.

Anzeige
Anzeige

Zum Weiterlesen:

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige