Python to wysokopoziomowy interpretowany język programowania, którego filozofia kładzie nacisk na czytelność kodu.
Po roku rozwoju, wydano nową wersję języka programowania Python, 3.11 . Nowa gałąź będzie wspierana przez półtora roku, po czym przez kolejne trzy i pół roku będą udostępniane poprawki eliminujące luki w zabezpieczeniach.
W tym samym czasie rozpoczęły się testy alfa gałęzi Pythona 3.12 (zgodnie z nowym harmonogramem rozwoju, prace nad nową gałęzią rozpoczynają się pięć miesięcy przed wydaniem poprzedniej i osiągają etap testów alfa w momencie wydania kolejnej wersji).
Gałąź Pythona 3.12 będzie dostępna w wersjach alfa przez siedem miesięcy, podczas których zostaną dodane nowe funkcje i naprawione błędy. Następnie beta-testy będą trwały trzy miesiące, podczas których dodawanie nowych funkcji będzie zabronione, a cała uwaga zostanie poświęcona poprawkom błędów. Ostatnie dwa miesiące przed startem oddział będzie w fazie kandydowania do startu, kiedy to nastąpi ostateczna stabilizacja.
Główne nowe funkcje Pythona 3.11
Ta nowa wersja zawiera znaczące prace mające na celu optymalizację wydajności . Nowa gałąź zawiera zmiany związane z przyspieszeniem i wdrażaniem inline wywołań funkcji , wykorzystaniem szybkich interpreterów dla typowych operacji oraz optymalizacjami opracowanymi w projektach Cinder i HotPy. W zależności od obciążenia, szybkość wykonywania kodu wzrasta od 10% do 60%. Średnio wydajność zestawu testów pyperformance wzrosła o 25%.
Mechanizm buforowania bajtkodu został przeprojektowany , co skróciło czas uruchamiania interpretera o 10-15%. Obiekty zawierające bajtkod są teraz statycznie przydzielane przez interpreter, co eliminuje etapy dekodowania bajtkodu pobranego z pamięci podręcznej i konwersji obiektów zawierających bajtkod w celu dynamicznego umieszczenia ich w pamięci.
Dodano obsługę grup wyjątków , co daje programowi możliwość generowania i przetwarzania wielu różnych wyjątków jednocześnie. Zaproponowano nowe typy wyjątków, ExceptionGroup i BaseExceptionGroup, umożliwiające grupowanie i łączenie wielu wyjątków. Dodano również wyrażenie „except*” do oddzielania wyjątków w ramach grupy.
Dodano specjalny typ LiteralString , który może zawierać wyłącznie ciągi znaków zgodne z typem LiteralString (tj. czyste ciągi znaków i ciągi znaków typu LiteralString, ale nie dowolne lub łączone ciągi znaków typu str). Typ LiteralString może być używany do ograniczania przekazywania argumentów w postaci ciągów znaków do funkcji, zapobiegając dowolnej zamianie fragmentów ciągów znaków, co może prowadzić do luk w zabezpieczeniach, na przykład podczas generowania ciągów znaków dla zapytań SQL lub poleceń powłoki.
Ponadto istnieje możliwość oznaczania poszczególnych elementów słowników typowych (TypedDict) znacznikami Wymagane i Niewymagane, co pozwala na określenie pól obowiązkowych i opcjonalnych (domyślnie wszystkie zadeklarowane pola są obowiązkowe, jeśli parametr total nie jest ustawiony na False).
Dodano dekorator klasy, metody i funkcji @dataclass_transform ; po jego określeniu statyczny kontroler typów traktuje obiekt tak, jakby używał dekoratora @dataclasses.dataclass.
Spośród innych zmian, które wyróżniają się w nowej wersji:
- Dodano możliwość używania grupowania atomowego ((?>…)) i zazdrosnych (zaborczych) kwantyfikatorów (*+, ++, ?+, {m,n}+) w wyrażeniach regularnych.
- Dodano typ TypeVarTuple, który pozwala na użycie zmiennych generycznych, w przeciwieństwie do TypeVar, który obejmuje nie jeden typ, ale dowolną liczbę typów.
- Biblioteka standardowa zawiera moduł tomllib z funkcjami do analizy formatu TOML.
- Do klasy BaseException dodano metodę add_note(), która umożliwia dołączenie notatki tekstowej do wyjątku, na przykład w celu dodania informacji kontekstowych, które nie były dostępne w momencie zgłoszenia wyjątku.
- Dodano specjalny typ Self, który reprezentuje bieżącą klasę prywatną. Self może służyć do adnotowania metod, które zwracają instancję Twojej klasy w prostszy sposób niż przy użyciu TypeVar.
- Dodano opcję wiersza poleceń "-P" i zmienną środowiskową PYTHONSAFEPATH, aby wyłączyć automatyczne łączenie potencjalnie niebezpiecznych ścieżek plików z sys.path.
- Narzędzie py.exe dla platformy Windows zostało znacznie ulepszone w celu obsługi składni „-V:”. / „ oprócz „- . ».
- Wiele makr C API zostało przekonwertowanych na zwykłe lub statyczne funkcje inline
- Moduły uu, cgi, pipe, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev i sunau zostały przestarzałe i zostaną usunięte z Pythona. 3.13 zwolnienie.
- Usunięto funkcje PyUnicode_Encode*.
- Klasa TaskGroup została dodana do modułu asyncio z implementacją asynchronicznego menedżera kontekstu, który czeka na ukończenie grupy zadań.
- Dodawanie zadań do grupy odbywa się za pomocą metody create_task().
Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat , możesz znaleźć szczegóły pod poniższym linkiem.