Wydano nową stabilną wersję popularnego języka programowania Python.
Python to wysokopoziomowy język programowania ogólnego przeznaczenia, skoncentrowany na zwiększaniu wydajności programisty i czytelności kodu. Główne cechy to dynamiczna typizacja, automatyczne zarządzanie pamięcią, pełna introspekcja, mechanizm obsługi wyjątków oraz wsparcie dla obliczeń wielowątkowych i wysokopoziomowych struktur danych.
Python to stabilny i szeroko stosowany język. Wykorzystywany jest w wielu projektach i w różnych rolach: jako główny język programowania lub do tworzenia rozszerzeń i integracji aplikacji. Główne obszary zastosowań to: rozwój webowy, uczenie maszynowe i analiza danych, automatyzacja oraz administracja systemowa. Obecnie Python zajmuje trzecie miejsce w rankingu TIOBE.
Główne zmiany:
Nowy wydajny parser oparty na gramatykach PEG.
W nowej wersji obecny parser Pythona oparty na gramatykach LL(1) (gramatyka kontekstowa) został zastąpiony nowym wydajnym i stabilnym parserem opartym na PEG (gramatyka podwyższonego porządku). Analizatory dla języków przedstawionych jako gramatyki kontekstowe, takie jak analizatory LR, wymagają specjalnego kroku analizy leksykalnej, który dzieli dane wejściowe zgodnie z przestrzeniami, interpunkcją itd. Jest to konieczne, ponieważ analizatory te wykorzystują analizę wstępną do przetwarzania niektórych gramatyk kontekstowych w czasie liniowym. Gramatyki podwyższonego porządku nie wymagają osobnego kroku analizy leksykalnej, a zasady dla niego mogą być zawarte razem z innymi zasadami gramatyki.
Nowe operatory i funkcje
Do wbudowanej klasy dict dodano dwa nowe operatory, | do łączenia słowników i |= do aktualizacji.
Do klasy str dodano dwie nowe funkcje: str.removeprefix(prefiks) oraz str.removesuffix(sufiks).
Sugestie typów dla wbudowanych typów kolekcji
W tej wersji włączono wsparcie dla składni generatorów we wszystkich standardowych kolekcjach dostępnych obecnie.
def read_blog_tags(tags: list[str]) -> None:
for tag in tags:
print("Nazwa tagu", tag)
Inne zmiany
PEP 573 Dostęp do stanu modułu za pomocą metod rozszerzenia C
PEP 593 Elastyczne funkcje i zmienne adnotacji
PEP 602 Python przechodzi na coroczne stabilne wydania
PEP 614 Łagodzące ograniczenia gramatyczne dla dekoratorów
PEP 615 Wsparcie bazy danych IANA dotyczącej stref czasowych w standardowej bibliotece
BPO 38379 zbieranie śmieci nie blokuje przywróconych obiektów
BPO 38692 os.pidfd_open, do zarządzania procesami bez wyścigów i sygnałów;
BPO 39926 wsparcie Unicode zaktualizowane do wersji 13.0.0
BPO 1635741, przy wielokrotnej inicjalizacji Pythona w tym samym procesie, nie występuje już wyciek pamięci
Kolekcje Pythona (range, tuple, set, frozenset, list, dict) przyspieszone za pomocą wywołania wektorowego PEP 590
Niektóre moduły Pythona (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) teraz używają wielofazowej inicjalizacji, jak określono w PEP 489
Kilka standardowych modułów bibliotek (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) teraz korzysta z stabilnego ABI, określonego przez PEP 384.
Źródło: linux.org.ru
