Was ist neu in Python 3.11?

Feb 20 2023
Python 3.11.

Python 3.11.2 ist die neueste Version der beliebten Programmiersprache und enthält eine Reihe neuer Funktionen und Verbesserungen. In diesem Blogartikel werfen wir einen Blick auf einige der neuen Funktionen in Python 3.11 und geben Beispielcode, um Ihnen den Einstieg zu erleichtern.

Zusammenfassung

Python 3.11 ist 10–60 % schneller als 3.10. Gemessen wurde eine 1,25-fache Beschleunigung gegenüber der Standard-Benchmark-Suite. exceptionEs gibt speedVerbesserungen syntax.

Ausnahmen

Von nun an können Sie mithilfe von Ausnahmegruppen mehrere Ausnahmen auslösen.

PEP 654 führt Sprachfunktionen ein, die es einem Programm ermöglichen, mehrere unabhängige Ausnahmen gleichzeitig auszulösen und zu behandeln. Die integrierten TypenExceptionGroupundBaseExceptionGroupermöglichen es, Ausnahmen zu gruppieren und gemeinsam auszulösen, und die neueexcept*Syntax verallgemeinert sichexcept, um Untergruppen von Ausnahmegruppen abzugleichen.

https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654

Sie können Ihrer Ausnahme auch Notizen hinzufügen. Auf diese Weise können Sie auf einfache Weise weitere Informationen angeben. Sie müssen die Ausnahme mit abfangen, try exceptdann müssen Sie eine Notiz hinzufügen und sie erneut auslösen

try:
    i = 1 / 0
except Exception as e:
    e.add_note("New Note: Zero Division Error")
    raise
Traceback (most recent call last):
  File "C:/Users/Sarper/Desktop/test.py", line 2, in <module>
    i = 1 / 0
ZeroDivisionError: division by zero
New Note: Zero Division Error

Der neue Typ ist „add“ Self, was normal ist self.

Neue Funktionen im Zusammenhang mit Typhinweisen

In diesem Abschnitt werden wichtige Änderungen behandelt, die Hinweise vom Typ PEP 484 und das typingModul betreffen.

Hier ist ein Beispiel:

from typing import Self

class MyClass:
    def __init__(self, num):
        self.num = num

    def create_class(self) -> Self:
        return MyClass(3) # returning new class

my_class = MyClass(2)
print(my_class.create_class())

# OUTPUT:
# <__main__.MyClass object at 0x000002477E1D0250>
from typing import Self

class MyClass:
    def __init__(self, num):
        self.num = num

    def return_class(self) -> Self:
        return self # returning self

my_class = MyClass(2)
print(my_class.return_class())

# OUTPUT:
<__main__.MyClass object at 0x0000014B89E71350>

Requiredund NotRequiredbieten eine einfache Möglichkeit, zu kennzeichnen, ob einzelne Elemente in einem TypedDictvorhanden sein müssen. Bisher war dies nur durch Vererbung möglich.

Alle Felder sind weiterhin standardmäßig erforderlich, es sei denn, der Gesamtparameter ist auf festgelegt False. In diesem Fall sind alle Felder weiterhin standardmäßig nicht erforderlich. Im Folgenden wird beispielsweise ein TypedDictmit einem erforderlichen und einem nicht erforderlichen Schlüssel angegeben:

Das Erstellen spezieller Wörterbücher ist eine leistungsstarke Funktion, wenn Sie Bibliotheken erstellen und Fehler reduzieren möchten, die vom Benutzer ausgehen können.

class Movie(TypedDict):
   title: str
   year: NotRequired[int]

m1: Movie = {"title": "Black Panther", "year": 2018}  # OK
m2: Movie = {"title": "Star Wars"}  # OK (year is not required)
m3: Movie = {"year": 2022}  # ERROR (missing required field title)

class Movie(TypedDict, total=False):
   title: Required[str]
   year: int

asyncio contextlib dataclasses datatime enum fcntl fractions functools haslib inpect locale logging math operator os pathlib re shutlit socket sqlite3 string sys sysconfig tempfile threading time tkinter traceback typing unicodedata unittest venv warnings zipfile

Weitere Informationen finden Sie hier

Betriebsbeschleunigungen

  • Binäre Operationen x+x; x*x; x-x;10 %
  • Tiefgestellt a[i]10–25 %
  • Store-Index a[i] = z10–25 %
  • Anrufe f(arg) C(arg)20 %
  • Globale Variable laden print len[1 ]
  • Attribut laden o.attr[ 3]
  • Lademethoden für Aufruf o.meth()10–20 %
  • Speichern Sie das Attribut o.attr = z2 % in pyperformance
  • Auspacksequenz *seq8 %

Quelle

https://docs.python.org/3/whatsnew/3.11.html