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