Python 3.8¶
Python 3.8.0 (final) został wydany 14 października 2019 r. Funkcje dla wersji 3.8 są zdefiniowane w PEP 569, a szczegółowy opis zmian można znaleźć w What’s New in Python 3.8.
Funkcje |
Status |
|
Argumenty wyłącznie pozycyjne |
||
Wyrażenia przypisania |
Ukończone |
|
Protokół pickle 5 z danymi poza pasmem |
||
Haki audytu w czasie wykonania |
||
Konfiguracja inicjalizacji Pythona |
||
Vectorcall: szybki protokół wywołań dla CPython |
||
Różne |
||
f-stringi obsługują = dla samodokumentujących się wyrażeń i debugowania |
Ukończone |
|
Inne zmiany w języku:
Instrukcja continue była niedozwolona w klauzuli finally z powodu problemu z implementacją. W Pythonie 3.8 to ograniczenie zostało zniesione |
Ukończone |
Typy bool, int i fractions.Fraction mają teraz metodę as_integer_ratio(), taką jak ta występująca w float i decimal.Decimal |
|
Konstruktory int, float i complex będą teraz używać metody specjalnej __index__(), jeśli jest dostępna, a odpowiadająca jej metoda __int__(), __float__() lub __complex__() nie jest dostępna |
|
Dodano obsługę sekwencji ucieczki N{name} w wyrażeniach regularnych |
|
Dict i dictviews są teraz iterowalne w odwróconej kolejności wstawiania za pomocą reversed() |
|
Składnia dozwolona dla nazw słów kluczowych w wywołaniach funkcji została dodatkowo ograniczona. W szczególności f((keyword)=arg) nie jest już dozwolone |
|
Uogólnione rozpakowywanie iterowalne w instrukcjach yield i return nie wymaga już otaczających nawiasów |
|
Gdy w kodzie takim jak [(10, 20) (30, 40)] brakuje przecinka, kompilator wyświetla SyntaxWarning z pomocną sugestią |
|
Operacje arytmetyczne między podklasami datetime.date lub datetime.datetime a obiektami datetime.timedelta zwracają teraz instancję podklasy, a nie klasy bazowej |
|
Gdy interpreter Pythona zostanie przerwany przez Ctrl-C (SIGINT), a wynikający z tego wyjątek KeyboardInterrupt nie zostanie przechwycony, proces Pythona kończy teraz działanie za pomocą sygnału SIGINT lub z poprawnym kodem wyjścia, tak aby proces wywołujący mógł wykryć, że zakończył działanie z powodu Ctrl-C |
|
Niektóre zaawansowane style programowania wymagają aktualizacji obiektu types.CodeType dla istniejącej funkcji |
|
W przypadku liczb całkowitych trójargumentowa forma funkcji pow() pozwala teraz, aby wykładnik był ujemny w przypadku, gdy podstawa jest względnie pierwsza z modułem |
|
Wyrażenia listowe słownikowe zostały zsynchronizowane z literałami słowników, tak aby klucz był obliczany jako pierwszy, a wartość jako druga |
|
Metoda object.__reduce__() może teraz zwracać krotkę o długości od dwóch do sześciu elementów |
Zmiany w modułach wbudowanych:
asyncio.run() przeszło z wstępnego do stabilnego API |
Ukończone |
Uruchomienie python -m asyncio uruchamia natywnie asynchroniczny REPL |
|
Wyjątek asyncio.CancelledError dziedziczy teraz po BaseException zamiast po Exception i nie dziedziczy już po concurrent.futures.CancelledError |
Ukończone |
Dodano asyncio.Task.get_coro() do pobierania opakowanej korutyny w obrębie asyncio.Task |
|
Zadania asyncio mogą teraz być nazywane, albo przez przekazanie argumentu słowa kluczowego name do asyncio.create_task() lub do metody pętli zdarzeń create_task(), albo przez wywołanie metody set_name() na obiekcie zadania |
|
Dodano obsługę Happy Eyeballs do asyncio.loop.create_connection(). Aby określić zachowanie, dodano dwa nowe parametry: happy_eyeballs_delay i interleave. |
|
get_objects() może teraz otrzymać opcjonalny parametr generacji wskazujący generację, z której mają być pobrane obiekty. (Należy jednak zauważyć, że chociaż gc jest wbudowany, get_objects() nie jest zaimplementowany dla MicroPython) |
|
Dodano nową funkcję math.dist() do obliczania odległości euklidesowej między dwoma punktami |
|
Rozszerzono funkcję math.hypot() o obsługę wielu wymiarów |
|
Dodano nową funkcję math.prod(), jako odpowiednik funkcji sum(), która zwraca iloczyn wartości początkowej „start” (domyślnie: 1) i iterowalnego zbioru liczb |
|
Dodano dwie nowe funkcje kombinatoryczne math.perm() i math.comb() |
|
Dodano nową funkcję math.isqrt() do obliczania dokładnych całkowitych pierwiastków kwadratowych bez konwersji na liczby zmiennoprzecinkowe |
|
Funkcja math.factorial() nie akceptuje już argumentów, które nie są przypominające int |
Ukończone |
Dodano nową funkcję sys.unraisablehook(), którą można nadpisać, aby kontrolować sposób obsługi „niezgłaszalnych wyjątków” |
|