Python 3.9: Was ist neu und besser?

Python 3.9, das heute veröffentlicht wurde, bringt bedeutende Änderungen sowohl an den Funktionen der Sprache als auch an der Entwicklung der Sprache mit sich. Python hat in den letzten Jahren an Popularität gewonnen und seine Verwendung ist in sich schnell entwickelnden Bereichen wie Datenwissenschaft und maschinellem Lernen explodiert. Das Projekt arbeitet hart daran, mit all den neuen Anforderungen Schritt zu halten. 

Hier finden Sie eine Übersicht aller wichtigen neuen Funktionen in Python 3.9.

Python wechselt zu einem jährlichen Veröffentlichungszyklus

Bis zu diesem Zeitpunkt wurde Python mit einer Trittfrequenz von achtzehn Monaten entwickelt und veröffentlicht. PEP 602 schlug vor, dass das Python-Entwicklungsteam einen jährlichen Veröffentlichungszyklus einführt, und dieser Vorschlag wurde angenommen. 

Ein jährlicher Veröffentlichungszyklus bedeutet weniger Funktionen pro Version, aber auch ein schnelleres Feedback zum Testen von Funktionen, weniger potenzielle Änderungen für jede Version und damit einen größeren Anreiz für Benutzer und Linux-Distributionsmanager, Python häufiger zu aktualisieren. Dies bedeutet auch, dass neue Funktionen, die spät im Entwicklungszyklus vorgeschlagen werden, nicht so lange brauchen, um in eine neue Version übernommen zu werden.

Die neue Zeitleiste bedeutet, dass Python 3.9 im Oktober 2020 ausgeliefert wird. Python 3.10 hat am 19. Mai 2020 offiziell mit der Vor-Alpha-Entwicklung begonnen, tritt mit dem Versand von Python 3.9 in die Alpha-Entwicklungsphase ein und wird im Oktober 2021 ausgeliefert. Zukünftige Python-Versionen werden dem folgen Gleiches Muster.

Python wird standardmäßig schneller

Jede Version von Python bietet Leistungsverbesserungen gegenüber der vorherigen Version. Python 3.9 bietet zwei große Verbesserungen, die die Leistung steigern, ohne dass Änderungen am vorhandenen Code erforderlich sind.

Die erste Verbesserung betrifft die stärkere Verwendung des vectorcallin Python 3.8 eingeführten Protokolls. vectorcallbeschleunigt viele gängige Funktionsaufrufe, indem temporäre Objekte, die für den Aufruf erstellt wurden, minimiert oder entfernt werden. In Python 3.9, mehr Python Einbauten - range, tuple, set, frozenset, list, dict- verwendet vectorcallintern die Ausführung zu beschleunigen.

Der zweite große Leistungsverbesserer ist das effizientere Parsen von Python-Quellcode. Der neue Parser für die CPython-Laufzeit wurde nicht entwickelt, um Leistungsprobleme zu beheben, sondern um interne Inkonsistenzen im ursprünglichen Parser zu beheben. Ein wichtiger Nebeneffekt ist jedoch das schnellere Parsen, insbesondere bei großen Codemengen.

Weitere Python-String- und Wörterbuchfunktionen

Python erleichtert die Bearbeitung gängiger Datentypen, und Python 3.9 erweitert diese Benutzerfreundlichkeit um neue Funktionen für Zeichenfolgen und Wörterbücher. Für Zeichenfolgen gibt es neue Methoden zum Entfernen von Präfixen und Suffixen. Vorgänge, für deren Ausführung lange Zeit viel manuelle Arbeit erforderlich war. Für Wörterbücher gibt es jetzt Gewerkschaftsoperatoren, einen zum Zusammenführen von zwei Wörterbüchern zu einem neuen Wörterbuch und einen zum Aktualisieren des Inhalts eines Wörterbuchs mit einem anderen Wörterbuch.

Dekorateure verlieren einige Einschränkungen

Mit Dekorateuren können Sie Python-Funktionen umschließen, um ihr Verhalten programmgesteuert zu ändern. Bisher konnten Dekorateure nur aus dem @ -Symbol, einem Namen (z. B. func) oder einem gepunkteten Namen ( func.method) und optional einem einzelnen Aufruf ( func.method(arg1, arg2)) bestehen. Mit Python 3.9 können Dekoratoren jetzt aus jedem gültigen Ausdruck bestehen.

Ein langjähriger Weg, um diese Einschränkung zu umgehen, bestand darin, eine Funktion oder einen Lambda-Ausdruck zu erstellen, der für einen komplexeren Ausdruck als Dekorateur steht. Jetzt reicht jeder Ausdruck aus, vorausgesetzt, er liefert etwas, das als Dekorateur fungieren kann.

Neue Operationen vom Typ Python

In den letzten Versionen hat Python die Unterstützung für Typhinweise erweitert. Dies dient hauptsächlich Lintern und Codeprüfern. Typen werden in CPython zur Laufzeit nicht erzwungen, und es ist nicht geplant, Python zu einer statisch typisierten Sprache zu machen. Typhinweise sind jedoch ein leistungsstarkes Tool, um die Konsistenz in großen Codebasen sicherzustellen, sodass Python-Code weiterhin von Typhinweisen profitieren kann. 

Zwei neue Funktionen für Typhinweise und Typanmerkungen fanden Eingang in Python 3.9. In einem Fall sind Tipphinweise für den Inhalt von Sammlungen - z. B. Listen und Wörterbücher - jetzt nativ in Python verfügbar. Dies bedeutet, dass Sie beispielsweise eine Liste als list[int] - eine Liste von Ganzzahlen - beschreiben können, ohne dass die typingBibliothek dafür benötigt wird.

Die zweite Ergänzung zu Pythons Schreibmechanismen sind flexible Funktionen und variable Anmerkungen. Dies ermöglicht die Verwendung des AnnotatedTyps zur Beschreibung eines Typs mithilfe von Metadaten, die vorab (mit Flusenwerkzeugen) oder zur Laufzeit überprüft werden können. Zum Beispiel Annotated[int, ctype("char")]könnte verwendet werden, um eine Ganzzahl zu beschreiben, die als charTyp in C betrachtet werden sollte. Standardmäßig würde Python mit einer solchen Annotation nichts anfangen, sie könnte jedoch von Code-Lintern verwendet werden. 

Verbesserungen an Python-Interna

Das Bereinigen, Verfeinern und Modernisieren der Python-Interna ist eine fortlaufende Initiative für die Python-Entwickler, und Python 3.9 weist einige Änderungen in diesem Sinne auf.

Das erste ist eine Neugestaltung der Art und Weise, wie Module mit den Importmaschinen interagieren. In C geschriebene Python-Erweiterungsmodule verwenden jetzt möglicherweise einen neuen Lademechanismus, mit dem sie sich beim Importieren eher wie normale Python-Module verhalten. Mehrere Module in der Standardbibliothek von Python unterstützen dieses Verhalten neu : _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref. Der neue Lademechanismus ermöglicht nicht nur eine flexiblere Handhabung von Erweiterungsmodulen durch Python, sondern auch neue Funktionen wie ein erweitertes Hooking-Verhalten.

Die zweite Bereinigungsinitiative ist ein stabiler interner ABI für CPython, der garantiert für die Lebensdauer von Python 3 gültig ist. In der Vergangenheit war jede größere Version von Python ABI-inkompatibel mit früheren Versionen, sodass Erweiterungsmodule für jede neue Version neu kompiliert werden müssen. Von nun an funktionieren alle Erweiterungsmodule, die das stabile ABI verwenden, in allen Python-Versionen. Mit Python 3.9 verwenden die folgenden Module in der Standardbibliothek das stabile ABI : audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib.

Andere Änderungen in Python 3.9

  • Die Standardbibliothek von Python unterstützt jetzt die IANA-Zeitzonendatenbank. Diese Datenbank ist gut gepflegt und weit verbreitet, und eine direkte Möglichkeit, sie in Pythons Datetime-Bibliothek zu verwenden, spart viel Zeit.
  • Neue Zeichenfolgenmethoden ermöglichen das einfache Entfernen von Präfixen und Suffixen. Dies ist eines der alltäglichen Szenarien, in denen etwas zu viel Heizplatte erforderlich war, als notwendig schien. Die Methoden new .removeprefix()und .removesuffix()geben eine geänderte Kopie einer Zeichenfolge ohne das betreffende Präfix oder Suffix zurück, sofern sie in der Zeichenfolge vorhanden sind.

Wie man mehr mit Python macht

  • 4 Python-Typprüfungen, um Ihren Code sauber zu halten
  • Python-Stil: 5 Tools zum Bereinigen Ihres Python-Codes
  • So arbeiten Sie mit dem Datentyp der Python-Liste
  • So verpacken Sie Python-Apps mit BeeWare Briefcase
  • Wie man Anaconda neben anderen Pythons laufen lässt
  • Verwendung von Python-Datenklassen
  • Beginnen Sie mit Async in Python
  • So verwenden Sie Asyncio in Python
  • 3 Schritte zu einer asynchronen Python-Überholung
  • Verwendung von PyInstaller zum Erstellen von ausführbaren Python-Dateien
  • Cython-Tutorial: So beschleunigen Sie Python
  • So installieren Sie Python auf intelligente Weise
  • So verwalten Sie Python-Projekte mit Poetry
  • So verwalten Sie Python-Projekte mit Pipenv
  • Virtualenv und venv: Erklärte virtuelle Python-Umgebungen
  • Python virtualenv und venv tun und nicht tun
  • Python-Threading und Unterprozesse erklärt
  • Verwendung des Python-Debuggers
  • Verwendung von timeit zum Profilieren von Python-Code
  • Verwendung von cProfile zum Profilieren von Python-Code
  • So konvertieren Sie Python in JavaScript (und wieder zurück)