Python 3.9¶
Python 3.9.0 (final) został wydany 5 października 2020 r. Funkcje dla wersji 3.9 są zdefiniowane w PEP 596, a szczegółowy opis zmian można znaleźć w What’s New in Python 3.9
Funkcje |
Status |
|
Szybki dostęp do stanu modułu z metod typów rozszerzeń C |
Nieistotne |
|
Operatory sumy zbiorów dodane do dict |
Ukończone [1] |
|
Podpowiedzi typów generycznych w standardowych kolekcjach |
||
Elastyczne adnotacje funkcji i zmiennych |
||
CPython przyjmuje roczny cykl wydań. Zamiast rocznego, dążąc do dwumiesięcznego cyklu wydań |
Nieistotne |
|
Złagodzone ograniczenia gramatyczne dotyczące dekoratorów |
||
Baza danych stref czasowych IANA jest teraz obecna w bibliotece standardowej w module zoneinfo |
||
Metody napisów do usuwania przedrostków i przyrostków |
||
CPython używa teraz nowego parsera opartego na PEG |
Nieistotne |
Inne zmiany w języku:
__import__() zgłasza teraz ImportError zamiast ValueError |
Ukończone |
Python pobiera teraz ścieżkę bezwzględną nazwy pliku skryptu określonej w wierszu poleceń (np.: python3 script.py): atrybut __file__ modułu __main__ stał się ścieżką bezwzględną, a nie względną |
|
Domyślnie, dla najlepszej wydajności, argument errors jest sprawdzany tylko przy pierwszym błędzie kodowania/dekodowania, a argument encoding jest czasami ignorowany dla pustych napisów |
|
„”.replace(„”, s, n) zwraca teraz s zamiast pustego napisu dla wszystkich niezerowych n. Jest to teraz zgodne z „”.replace(„”, s) |
|
Każde poprawne wyrażenie może być teraz użyte jako dekorator. Wcześniej gramatyka była znacznie bardziej restrykcyjna |
|
Równoległe uruchamianie aclose() / asend() / athrow() jest teraz zabronione, a ag_running odzwierciedla teraz rzeczywisty status działania generatora asynchronicznego |
|
Nieoczekiwane błędy podczas wywoływania metody __iter__ nie są już maskowane przez TypeError w operatorze in oraz w funkcjach contains(), indexOf() i countOf() modułu operator |
|
Wyrażenia lambda bez nawiasów nie mogą już być częścią wyrażenia w klauzuli if w wyrażeniach listowych i wyrażeniach generatorowych |
Zmiany w modułach wbudowanych:
Ze względu na istotne obawy dotyczące bezpieczeństwa parametr reuse_address funkcji asyncio.loop.create_datagram_endpoint() nie jest już obsługiwany |
|
Dodano nową korutynę shutdown_default_executor(), która planuje zamknięcie domyślnego executora oczekującego na zakończenie zamykania ThreadPoolExecutor. Ponadto zaktualizowano asyncio.run(), aby używał nowej korutyny. |
|
Dodano asyncio.PidfdChildWatcher, specyficzną dla Linuksa implementację obserwatora procesów potomnych, która odpytuje deskryptory plików procesów |
|
dodano nową coroutine asyncio.to_thread() |
|
Podczas anulowania zadania z powodu przekroczenia limitu czasu asyncio.wait_for() będzie teraz czekać, aż anulowanie zostanie zakończone także w przypadku, gdy limit czasu wynosi <= 0, podobnie jak ma to miejsce przy dodatnich limitach czasu |
|
asyncio zgłasza teraz TyperError podczas wywoływania niezgodnych metod z gniazdem ssl.SSLSocket |
|
Odzyskiwanie pamięci nie blokuje się na wskrzeszonych obiektach |
|
Dodano nową funkcję gc.is_finalized() do sprawdzania, czy obiekt został sfinalizowany przez mechanizm odzyskiwania pamięci |
|
Rozszerzono funkcję math.gcd() o obsługę wielu argumentów. Wcześniej obsługiwała tylko dwa argumenty |
|
Dodano math.lcm(): zwraca najmniejszą wspólną wielokrotność podanych argumentów |
|
Dodano math.nextafter(): zwraca następną wartość zmiennoprzecinkową po x w kierunku y |
|
Dodano math.ulp(): zwraca wartość najmniej znaczącego bitu liczby zmiennoprzecinkowej |
|
Udostępniono specyficzne dla Linuksa os.pidfd_open() i os.P_PIDFD |
|
Funkcja os.unsetenv() jest teraz dostępna także w systemie Windows |
Ukończone |
Funkcje os.putenv() i os.unsetenv() są teraz zawsze dostępne |
Ukończone |
Dodano funkcję os.waitstatus_to_exitcode(): konwertuje status oczekiwania na kod wyjścia |
|
Dodano nową metodę random.Random.randbytes: generuje losowe bajty |
|
Dodano nowy atrybut sys.platlibdir: nazwa specyficznego dla platformy katalogu bibliotek |
|
Wcześniej sys.stderr był buforowany blokowo, gdy nie był interaktywny. Teraz stderr domyślnie jest zawsze buforowany liniowo |
|
Uwagi