Heim > Artikel > Backend-Entwicklung > Die besten neuen Funktionen und Funktionskorrekturen in Python 3.11
Dieser Artikel vermittelt Ihnen relevantes Wissen über Python, das hauptsächlich die besten neuen Funktionen und Funktionskorrekturen in Version 3.11 vorstellt. Im Folgenden finden Sie einen Überblick über die wichtigsten neuen Funktionen in Python 3.11 und ihre Auswirkungen auf Python 3.11 Schauen Sie sich die Bedeutung von Python-Entwicklern an. Ich hoffe, dass es für alle hilfreich sein wird.
Empfohlenes Lernen: Python-Video-Tutorial
Die Programmiersprache Python veröffentlicht jedes Jahr eine neue Version mit Funktionssperren und die endgültige Version wird unter veröffentlicht Ende des Jahres. Der Funktionsumfang von Python 3.11 wurde gerade fertiggestellt und eine Beta-Version steht zum Testen zur Verfügung. Entwicklern wird empfohlen, diese neueste Version mit Nicht-Produktionscode auszuprobieren, um sicherzustellen, dass es nicht zu Konflikten mit Ihren Programmen kommt, und um zu verstehen, ob Ihr Code von den Leistungsverbesserungen profitieren wird.
Hier finden Sie einen Überblick über die wichtigsten neuen Funktionen in Python 3.11 und was sie für Python-Entwickler bedeuten.
Es gibt viele einzelne Leistungsverbesserungen in Python 3.11, aber die größte ist der dedizierte adaptive Interpreter. Da sich der Typ des Objekts selten ändert, versucht der Interpreter nun, den laufenden Code zu analysieren und den regulären Bytecode durch den spezifischen Bytecodetyp zu ersetzen. Beispielsweise können binäre Operationen (Addition, Subtraktion usw.) durch spezielle Versionen für Ganzzahlen, Gleitkommazahlen und Zeichenfolgen ersetzt werden.
In Python 3.11 erfordern Python-Funktionsaufrufe außerdem weniger Overhead. Stapelrahmen für Funktionsaufrufe verbrauchen jetzt weniger Speicher und sind effizienter gestaltet. Darüber hinaus sind rekursive Aufrufe zwar nicht tail-optimiert (was in Python wahrscheinlich sowieso nicht möglich ist), aber effizienter als frühere Versionen. Auch der Python-Interpreter selbst startet schneller und die von der Python-Laufzeit benötigten Kernmodule werden effizienter gespeichert und geladen.
Laut der offiziellen Python-Benchmark-Suite läuft Python 3.11 etwa 1,25-mal schneller als Version 3.10. Beachten Sie, dass es sich bei dieser Beschleunigung um ein Gesamtmaß handelt: Einige Dinge sind viel schneller, viele andere jedoch nur geringfügig schneller oder ungefähr gleich. Das Beste an diesen Verbesserungen ist jedoch, dass sie kostenlos sind. Sie müssen keine Codeänderungen an Ihrem Python-Programm vornehmen, um die Beschleunigungen von 3.11 zu nutzen.
Eine weitere sehr nützliche Funktion in 3.11 sind detailliertere Fehlermeldungen. Python 3.10 verfügt dank eines neuen Parsers im Interpreter bereits über eine bessere Fehlerberichterstattung. Jetzt erweitert Python 3.11 dies und liefert detailliertes Feedback darüber, welcher spezifische Teil eines bestimmten Ausdrucks den Fehler verursacht hat.
Denken Sie an den folgenden Code, der den Fehler auslöst:
x = [1,2,3] z = x[1][0]
In Python 3.10 erhalten wir die folgende Fehlermeldung, die nicht sehr hilfreich ist:
File "C:\Python311\code.py", line 2, in <module> z = x[1][0] TypeError: 'int' object is not subscriptable
Anstatt uns herauszufinden, welches int der nicht kompilierbare Code ist, erhalten wir in Python 3.11 Die Fehlerverfolgung zeigt genau auf den Teil der Zeile, der den Fehler erzeugt hat:
File "C:\Python311\code.py", line 2, in <module> z = x[1][0] ~~~~^^^ TypeError: 'int' object is not subscriptable
Jetzt ist ziemlich klar, wo das Problem liegt.
Der Fehlerbehandlungsmechanismus von Python hat in Python 3.11 viele neue Funktionen erhalten:
1. Verwenden Sie die neue Ausnahme*-Syntax und den neuen Ausnahmetyp ExceptionGroup, um mehrere Ausnahmen zu behandeln. Dies ermöglicht eine elegante Behandlung von Problemen, die mehrere Fehler gleichzeitig auslösen können, beispielsweise beim Umgang mit asynchronen oder gleichzeitigen Methoden oder beim Umgang mit mehreren Fehlern beim Wiederholen eines Vorgangs.
2. „Zero-Cost“-Ausnahmen: Sofern nicht tatsächlich eine Ausnahme ausgelöst wird, gibt es jetzt keinen Speicherverbrauch für das Programm. Dies bedeutet, dass der Standardpfad zum Ausprobieren/Ausnehmen von Blöcken schneller ist und weniger Speicher benötigt.
3. Die zum Abfangen von Ausnahmen erforderliche Zeit wird um etwa 10 % reduziert.
4. Ausnahmen können durch kontextbezogene Kommentare verbessert werden, um Ausnahmen von Codeblöcken zu trennen.
Pythons Typhinweisfunktion erleichtert die Verwaltung und Analyse größerer Codebasen, und seit Python 3.5 hat sich die Leistung von Typhinweisen mit jeder Revision deutlich verbessert. Python 3.11 führt mehrere neue Typhinweise ein.
Klassenmethoden erfordern eine verzögerte und detaillierte Deklaration, bevor sie ihren eigenen Typ zurückgeben, um wirksam zu werden. Das Muster vom Typ .Self erleichtert die Deklaration des Rückgabewerts einer Klassenmethode. Mit den Analysetools dieser Methoden können Sie nützliche und vorhersehbare Ergebnisse erhalten.
Bisher konnten Typanmerkungen nicht definieren, dass eine bestimmte Variable ein String-Literal sein muss, d. h. eine im Quellcode definierte Zeichenfolge. neuer Typ. Die LiteralString-Annotation behebt dieses Problem. Mithilfe neuer Annotationen können Linters testen, ob eine Variable eine in der Quelle definierte Zeichenfolge oder eine neue Zeichenfolge ist, die nur aus in der Quelle definierten Zeichenfolgen besteht.
Seit Python 3.7 erleichtern Datenklassen die Definition von Klassen, die dem allgemeinen Muster der Erstellung von Eigenschaften basierend auf Initialisierungsparametern folgen. Es gibt jedoch keinen Standardmechanismus, der es etwas, das sich wie eine Datenklasse verhält (aber nicht die Datenklasse selbst ist), ermöglicht, Typanmerkungen zu verwenden, um sein Verhalten zu deklarieren. Bei der Datenklassentransformation wird der Modifikator type.dataclass_transform hinzugefügt, um den Compiler zu veranlassen, dass sich eine bestimmte Funktion, Klasse oder Metaklasse wie eine Datenklasse verhält.
Zu den ersten generischen Vorschlägen gehört TypeVar, eine Möglichkeit, eine generische Funktion mithilfe eines einzelnen parametrisierten Typs anzugeben. Typ T kann beispielsweise int oder float sein. Python 3.11 hat TypeVarTuple oder „Variablen-Generika“ hinzugefügt, mit denen Sie Platzhalter angeben können, nicht nur einen Typ, sondern eine Reihe von Typen, die als Tupel dargestellt werden. Dies ist besonders nützlich in Bibliotheken wie NumPy, wo Sie vorab auf Fehler prüfen können, etwa ob das bereitgestellte Array die richtige Form hat.
Python verwendet TOML oder Toms explizite minimalistische Sprache als Konfigurationsformat (z. B. pyproject.TOML), bietet jedoch nicht die Möglichkeit, Dateien im TOML-Format als Standardbibliotheksmodul zu lesen. Python 3.11 hat tomllib hinzugefügt, um dieses Problem zu lösen. Beachten Sie, dass tomllib keine TOML-Dateien erstellt oder schreibt. Sie benötigen hierfür ein Drittanbietermodul wie Tomli-W oder TOML Kit.
Pythons re-Modul wird zur Verarbeitung regulärer Ausdrücke verwendet und es fehlen einige Funktionen, die in anderen Implementierungen regulärer Ausdrücke zu finden sind. Eine davon ist die atomare Gruppierung, die in anderen Sprachen weithin unterstützt wird. Python 3.11 unterstützt dieses Muster jetzt mit einer gemeinsamen Syntax für die atomare Gruppierung (z. B. (?>…).
Die Mustervergleichs-Engine des re-Moduls wurde ebenfalls etwas umgeschrieben und läuft etwa 10 % schneller.
PEP 594 hat einen Versuch gestartet, viele sogenannte leere Batterien oder veraltete oder nicht gewartete Module aus der Python-Standardbibliothek zu entfernen. Ab Python 3.11 sind diese Bibliotheken als veraltet markiert. aber noch nicht entfernt; sie werden in Python 3.13 vollständig entfernt
1. Python-Objekte müssen aktualisiert werden weil ihre Namespaces jetzt träge erstellt werden und ihre Namespace-Wörterbücher jetzt, soweit möglich, Schlüssel gemeinsam nutzen
2. Wörterbücher mit allen Schlüsseln in Unicode müssen keine Hashes mehr speichern, was eine höhere Cache-Effizienz ermöglicht 3. Die Python-Laufzeit verwendet den Python-Interpreter und kann jetzt experimentell die Kompilierung in WebAssembly unterstützen. Dies kann die zukünftige Entwicklung von Projekten wie PyScript unterstützen, das die Ausführung der WASM-Laufzeit im Browser ermöglicht
Empfohlenes Lernen:
Python-Video-TutorialDas obige ist der detaillierte Inhalt vonDie besten neuen Funktionen und Funktionskorrekturen in Python 3.11. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!