Python 3.8¶
Python 3.8.0 (final) wurde am 14. Oktober 2019 veröffentlicht. Die Funktionen für 3.8 sind in PEP 569 definiert, und eine detaillierte Beschreibung der Änderungen finden Sie in What’s New in Python 3.8.
Funktionen |
Status |
|
Nur-positionale Argumente |
||
Zuweisungsausdrücke |
Vollständig |
|
Pickle-Protokoll 5 mit Out-of-Band-Daten |
||
Laufzeit-Audit-Hooks |
||
Python-Initialisierungskonfiguration |
||
Vectorcall: ein schnelles Aufrufprotokoll für CPython |
||
Verschiedenes |
||
f-Strings unterstützen = für selbstdokumentierende Ausdrücke und Debugging |
Vollständig |
|
Weitere Sprachänderungen:
Eine continue-Anweisung war aufgrund eines Implementierungsproblems in der finally-Klausel unzulässig. In Python 3.8 wurde diese Einschränkung aufgehoben |
Vollständig |
Die Typen bool, int und fractions.Fraction verfügen nun über eine Methode as_integer_ratio(), wie sie bei float und decimal.Decimal zu finden ist |
|
Die Konstruktoren von int, float und complex verwenden nun die spezielle Methode __index__(), sofern verfügbar und die entsprechende Methode __int__(), __float__() oder __complex__() nicht verfügbar ist |
|
Unterstützung für N{name}-Escapes in regulären Ausdrücken hinzugefügt |
|
Dicts und Dict-Views sind nun mit reversed() in umgekehrter Einfügereihenfolge iterierbar |
|
Die für Schlüsselwortnamen in Funktionsaufrufen zulässige Syntax wurde weiter eingeschränkt. Insbesondere ist f((keyword)=arg) nicht mehr zulässig |
|
Verallgemeinertes Entpacken von Iterables in yield- und return-Anweisungen erfordert keine umschließenden Klammern mehr |
|
Wenn in Code wie [(10, 20) (30, 40)] ein Komma fehlt, zeigt der Compiler eine SyntaxWarning mit einem hilfreichen Vorschlag an |
|
Arithmetische Operationen zwischen Unterklassen von datetime.date oder datetime.datetime und datetime.timedelta-Objekten geben nun eine Instanz der Unterklasse zurück, statt der Basisklasse |
|
Wenn der Python-Interpreter durch Ctrl-C (SIGINT) unterbrochen wird und die daraus resultierende KeyboardInterrupt-Ausnahme nicht abgefangen wird, beendet sich der Python-Prozess nun über ein SIGINT-Signal oder mit dem korrekten Exit-Code, sodass der aufrufende Prozess erkennen kann, dass er aufgrund eines Ctrl-C beendet wurde |
|
Einige fortgeschrittene Programmierstile erfordern die Aktualisierung des types.CodeType-Objekts für eine bestehende Funktion |
|
Für Ganzzahlen erlaubt die dreiargumentige Form der Funktion pow() nun einen negativen Exponenten, sofern die Basis relativ prim zum Modul ist |
|
Dict-Comprehensions wurden mit Dict-Literalen angeglichen, sodass zuerst der Schlüssel und danach der Wert berechnet wird |
|
Die Methode object.__reduce__() kann nun ein Tupel mit zwei bis sechs Elementen zurückgeben |
Änderungen an eingebauten Modulen:
asyncio.run() hat den Status von der vorläufigen zur stabilen API erreicht |
Vollständig |
Die Ausführung von python -m asyncio startet eine nativ asynchrone REPL |
|
Die Ausnahme asyncio.CancelledError erbt nun von BaseException statt von Exception und erbt nicht mehr von concurrent.futures.CancelledError |
Vollständig |
asyncio.Task.get_coro() wurde hinzugefügt, um die umschlossene Coroutine innerhalb eines asyncio.Task abzurufen |
|
Asyncio-Tasks können nun benannt werden, entweder durch Übergabe des Schlüsselwortarguments name an asyncio.create_task() oder die Event-Loop-Methode create_task(), oder durch Aufruf der Methode set_name() auf dem Task-Objekt |
|
Unterstützung für Happy Eyeballs zu asyncio.loop.create_connection() hinzugefügt. Zur Festlegung des Verhaltens wurden zwei neue Parameter hinzugefügt: happy_eyeballs_delay und interleave. |
|
get_objects() kann nun einen optionalen generation-Parameter erhalten, der eine Generation angibt, aus der Objekte abgerufen werden sollen. (Beachten Sie jedoch, dass gc zwar eingebaut ist, get_objects() in MicroPython aber nicht implementiert ist) |
|
Neue Funktion math.dist() zur Berechnung des euklidischen Abstands zwischen zwei Punkten hinzugefügt |
|
Die Funktion math.hypot() wurde erweitert, um mehrere Dimensionen zu verarbeiten |
|
Neue Funktion math.prod() hinzugefügt, als Analogon zu sum(), die das Produkt aus einem „start“-Wert (Standard: 1) und einem iterierbaren Objekt von Zahlen zurückgibt |
|
Zwei neue kombinatorische Funktionen math.perm() und math.comb() hinzugefügt |
|
Neue Funktion math.isqrt() zur Berechnung exakter ganzzahliger Quadratwurzeln ohne Umwandlung in Gleitkommazahlen hinzugefügt |
|
Die Funktion math.factorial() akzeptiert keine Argumente mehr, die nicht int-artig sind |
Vollständig |
Neue Funktion sys.unraisablehook() hinzugefügt, die überschrieben werden kann, um zu steuern, wie „unraisable exceptions“ behandelt werden |
|