Python 3.11 kommt mit Leistungsverbesserungen, Caching-Redesign und mehr

Python

Python ist eine hochrangige interpretierte Programmiersprache, deren Philosophie die Lesbarkeit ihres Codes betont.

Nach einem Jahr Entwicklungszeit wurde die neue Version der Programmiersprache Python, 3.11 , veröffentlicht. Der neue Zweig wird anderthalb Jahre lang unterstützt, anschließend werden über weitere dreieinhalb Jahre Patches zur Behebung von Sicherheitslücken bereitgestellt.

Gleichzeitig begann das Alpha-Testing des Python 3.12-Branches (gemäß dem neuen Entwicklungsplan beginnt die Arbeit an einem neuen Branch fünf Monate vor der Veröffentlichung des vorherigen Branches und erreicht das Alpha-Testing-Stadium zum Zeitpunkt der nächsten Version).

Der Python 3.12-Zweig wird sieben Monate lang in Alpha-Versionen sein, in denen neue Funktionen hinzugefügt und Fehler behoben werden. Danach finden drei Monate lang Betatests statt, in denen das Hinzufügen neuer Funktionen verboten ist und die volle Aufmerksamkeit auf Fehlerbehebungen gerichtet wird. In den letzten zwei Monaten vor dem Start befindet sich der Zweig in der Startkandidatenphase, zu der die endgültige Stabilisierung stattfindet.

Die wichtigsten neuen Funktionen von Python 3.11

Diese neue Version beinhaltet umfangreiche Leistungsoptimierungen . Der neue Branch umfasst Änderungen zur Beschleunigung und zum Inline-Deployment von Funktionsaufrufen , die Verwendung schneller Interpreter für typische Operationen sowie Optimierungen der Projekte Cinder und HotPy. Je nach Arbeitslast erhöht sich die Codeausführungsgeschwindigkeit um 10 % bis 60 %. Im Durchschnitt verbesserte sich die Leistung in der pyperformance-Testsuite um 25 %.

Der Bytecode-Caching-Mechanismus wurde überarbeitet , wodurch die Startzeit des Interpreters um 10–15 % reduziert wird. Objekte, die Bytecode enthalten, werden nun statisch vom Interpreter allokiert. Dadurch entfallen die Schritte des Dekodierens des aus dem Cache abgerufenen Bytecodes und des Konvertierens der Objekte für die dynamische Speicherplatzierung.

Die Unterstützung für Ausnahmegruppen wurde hinzugefügt , wodurch das Programm mehrere unterschiedliche Ausnahmen gleichzeitig generieren und verarbeiten kann. Neue Ausnahmetypen, ExceptionGroup und BaseExceptionGroup, werden vorgeschlagen, um mehrere Ausnahmen zu gruppieren und zu kombinieren. Der Ausdruck „except*“ wurde hinzugefügt, um Ausnahmen innerhalb einer Gruppe zu trennen.

Es wurde ein spezieller LiteralString-Typ hinzugefügt , der nur mit dem LiteralString-Typ kompatible Zeichenketten enthalten kann (d. h. reine Zeichenketten und Zeichenketten vom Typ LiteralString, aber keine beliebigen oder kombinierten Zeichenketten vom Typ str). Der LiteralString-Typ kann verwendet werden, um die Übergabe von Zeichenkettenargumenten an Funktionen einzuschränken und so das willkürliche Ersetzen von Zeichenkettenteilen zu verhindern, wodurch Sicherheitslücken entstehen können, beispielsweise bei der Generierung von Zeichenketten für SQL-Abfragen oder Shell-Befehle.

Darüber hinaus besteht die Möglichkeit, einzelne Elemente von typisierten Wörterbüchern (TypedDict) mit den Markierungen Required und Not Required zu kennzeichnen, um obligatorische und optionale Felder zu bestimmen (standardmäßig sind alle deklarierten Felder obligatorisch, wenn der Parameter total nicht auf False gesetzt ist).

Der Klassen-, Methoden- und Funktionsdekorator @dataclass_transform wurde hinzugefügt ; wenn er angegeben wird, behandelt der statische Typchecker das Objekt so, als ob es den Dekorator @dataclasses.dataclass verwenden würde.

Von den anderen Änderungen, die in dieser neuen Version auffallen:

  • Möglichkeit hinzugefügt, atomare Gruppierung ((?>…)) und eifersüchtige (possessive) Quantifizierer (*+, ++, ?+, {m,n}+) in regulären Ausdrücken zu verwenden.
  • Der Typ TypeVarTuple wurde hinzugefügt, der die Verwendung von Variablen-Generika ermöglicht, im Gegensatz zu TypeVar, das nicht einen Typ, sondern eine beliebige Anzahl von Typen abdeckt.
  • Die Standardbibliothek enthält das tomllib-Modul mit Funktionen zum Parsen des TOML-Formats.
  • Die Methode add_note() wurde der Klasse BaseException hinzugefügt, die es ermöglicht, eine Textnotiz an die Ausnahme anzuhängen, um beispielsweise kontextbezogene Informationen hinzuzufügen, die zum Zeitpunkt des Auslösens der Ausnahme nicht verfügbar waren.
  • Ein spezieller Typ Selbst wurde hinzugefügt, um die aktuelle Privatklasse darzustellen. Self kann verwendet werden, um Methoden zu kommentieren, die eine Instanz Ihrer Klasse auf einfachere Weise als mit TypeVar zurückgeben.
  • Befehlszeilenoption „-P“ und Umgebungsvariable PYTHONSAFEPATH hinzugefügt, um die automatische Verbindung potenziell unsicherer Dateipfade mit sys.path zu deaktivieren.
  • Das Dienstprogramm py.exe für die Windows-Plattform wurde erheblich verbessert, um die „-V:“-Syntax zu unterstützen. / " zusätzlich zu "- . ».
  • Viele C-API-Makros wurden in reguläre oder statische Inline-Funktionen konvertiert
  • Die Module uu, cgi, pipe, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev und sunau sind veraltet und werden aus Python entfernt. 3.13-Version.
  • PyUnicode_Encode*-Funktionen entfernt.
  • Die TaskGroup-Klasse wurde dem asyncio-Modul mit der Implementierung eines asynchronen Kontextmanagers hinzugefügt, der auf den Abschluss der Aufgabengruppe wartet.
  • Das Hinzufügen von Aufgaben zu einer Gruppe erfolgt mit der Methode create_task().

Wenn Sie schließlich mehr darüber erfahren möchten , finden Sie die Details unter folgendem Link.


Als bevorzugte Quelle in Google hinzufügen