Python 3.9¶
Python 3.9.0 (završna verzija) izdan je 5. listopada 2020. Značajke za 3.9 definirane su u PEP 596, a detaljan opis promjena može se pronaći u What’s New in Python 3.9
Značajke |
Status |
|
Brz pristup stanju modula iz metoda tipova C proširenja |
Nije relevantno |
|
Operatori unije dodani u dict |
Dovršeno [1] |
|
Tipkanje generičkih anotacija u standardnim kolekcijama |
||
Fleksibilne anotacije funkcija i varijabli |
||
CPython usvaja godišnji ciklus izdavanja. Umjesto godišnjeg, cilja se na dvomjesečni ciklus izdavanja |
Nije relevantno |
|
Ublažena gramatička ograničenja na dekoratorima |
||
Baza podataka vremenskih zona IANA sada je prisutna u standardnoj biblioteci u modulu zoneinfo |
||
Metode niza za uklanjanje prefiksa i sufiksa |
||
CPython sada koristi novi parser temeljen na PEG |
Nije relevantno |
Ostale jezične promjene:
__import__() sada izaziva ImportError umjesto ValueError |
Dovršeno |
Python sada dohvaća apsolutnu putanju naziva datoteke skripte navedene u naredbenom retku (npr.: python3 script.py): atribut __file__ modula __main__ postao je apsolutna putanja, umjesto relativne putanje |
|
Prema zadanim postavkama, radi najboljih performansi, argument errors provjerava se samo pri prvoj pogrešci kodiranja/dekodiranja, a argument encoding ponekad se zanemaruje za prazne nizove |
|
„”.replace(„”, s, n) sada vraća s umjesto praznog niza za sve n različite od nule. Sada je u skladu s „”.replace(„”, s) |
|
Bilo koji valjani izraz sada se može koristiti kao dekorator. Prije je gramatika bila mnogo restriktivnija |
|
Paralelno izvođenje aclose() / asend() / athrow() sada je zabranjeno, a ag_running sada odražava stvarni status izvođenja asinkronog generatora |
|
Neočekivane pogreške pri pozivanju metode __iter__ više nisu prikrivene s TypeError u operatoru in te u funkcijama contains(), indexOf() i countOf() modula operator |
|
Lambda izrazi bez zagrada više ne mogu biti dio izraza u klauzuli if u komprehenzijama i generatorskim izrazima |
Promjene ugrađenih modula:
Zbog značajnih sigurnosnih razloga, parametar reuse_address funkcije asyncio.loop.create_datagram_endpoint() više nije podržan |
|
Dodana je nova korutina shutdown_default_executor() koja zakazuje gašenje zadanog izvršitelja koje čeka da ThreadPoolExecutor dovrši zatvaranje. Također, asyncio.run() ažurirana je da koristi novu korutinu. |
|
Dodana je asyncio.PidfdChildWatcher, implementacija nadzornika podređenih procesa specifična za Linux koja anketira deskriptore datoteka procesa |
|
dodana je nova coroutine asyncio.to_thread() |
|
Pri otkazivanju zadatka zbog isteka vremena, asyncio.wait_for() sada će čekati dok otkazivanje ne bude dovršeno i u slučaju kada je timeout <= 0, kao što to čini s pozitivnim vremenskim ograničenjima |
|
asyncio sada izaziva TyperError pri pozivanju nekompatibilnih metoda s utičnicom ssl.SSLSocket |
|
Sakupljanje smeća ne blokira na uskrslim objektima |
|
Dodana je nova funkcija gc.is_finalized() za provjeru je li objekt finaliziran od strane sakupljača smeća |
|
Proširena je funkcija math.gcd() za obradu više argumenata. Prije je podržavala samo dva argumenta |
|
Dodana je math.lcm(): vraća najmanji zajednički višekratnik navedenih argumenata |
|
Dodana je math.nextafter(): vraća sljedeću vrijednost s pomičnim zarezom nakon x prema y |
|
Dodana je math.ulp(): vraća vrijednost najmanje značajnog bita broja s pomičnim zarezom |
|
Izloženi su Linux-specifični os.pidfd_open() i os.P_PIDFD |
|
Funkcija os.unsetenv() sada je dostupna i na Windowsu |
Dovršeno |
Funkcije os.putenv() i os.unsetenv() sada su uvijek dostupne |
Dovršeno |
Dodana je funkcija os.waitstatus_to_exitcode(): pretvara status čekanja u izlazni kod |
|
Dodana je nova metoda random.Random.randbytes: generira nasumične bajtove |
|
Dodan je novi atribut sys.platlibdir: naziv direktorija biblioteke specifičnog za platformu |
|
Prije je sys.stderr bio blokovski međuspremnik kada je neinteraktivan. Sada stderr prema zadanim postavkama uvijek koristi međuspremnik po retku |
|
Napomene