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