Python 3.8¶
Python 3.8.0 (završna verzija) izdan je 14. listopada 2019. Značajke za 3.8 definirane su u PEP 569, a detaljan opis promjena može se pronaći u What’s New in Python 3.8.
Značajke |
Status |
|
Isključivo pozicijski argumenti |
||
Izrazi pridruživanja |
Dovršeno |
|
Pickle protokol 5 s podacima izvan opsega (out-of-band) |
||
Kuke za reviziju tijekom izvođenja (runtime audit hooks) |
||
Konfiguracija inicijalizacije Pythona |
||
Vectorcall: brzi protokol pozivanja za CPython |
||
Razno |
||
f-stringovi podržavaju = za izraze koji se sami dokumentiraju i za otklanjanje pogrešaka |
Dovršeno |
|
Ostale jezične promjene:
Naredba continue bila je nedopuštena u klauzuli finally zbog problema s implementacijom. U Pythonu 3.8 to je ograničenje ukinuto |
Dovršeno |
Tipovi bool, int i fractions.Fraction sada imaju metodu as_integer_ratio() poput one koja se nalazi u float i decimal.Decimal |
|
Konstruktori tipova int, float i complex sada će koristiti posebnu metodu __index__(), ako je dostupna i ako odgovarajuća metoda __int__(), __float__() ili __complex__() nije dostupna |
|
Dodana je podrška za izlazne sekvence N{name} u regularnim izrazima |
|
Dict i pogledi rječnika sada su iterabilni obrnutim redoslijedom umetanja pomoću reversed() |
|
Sintaksa dopuštena za imena ključnih riječi u pozivima funkcija dodatno je ograničena. Konkretno, f((keyword)=arg) više nije dopušteno |
|
Generalizirano raspakiravanje iterabilnih objekata u naredbama yield i return više ne zahtijeva okružujuće zagrade |
|
Kada zarez nedostaje u kodu kao što je [(10, 20) (30, 40)], prevoditelj prikazuje SyntaxWarning s korisnim prijedlogom |
|
Aritmetičke operacije između podklasa datetime.date ili datetime.datetime i objekata datetime.timedelta sada vraćaju instancu podklase, umjesto bazne klase |
|
Kada se Python interpreter prekine pomoću Ctrl-C (SIGINT) i nastala iznimka KeyboardInterrupt ne uhvati se, Python proces sada izlazi putem signala SIGINT ili s ispravnim izlaznim kodom tako da pozivajući proces može otkriti da je proces završio zbog Ctrl-C |
|
Neki napredni stilovi programiranja zahtijevaju ažuriranje objekta types.CodeType za postojeću funkciju |
|
Za cijele brojeve, troargumentni oblik funkcije pow() sada dopušta da eksponent bude negativan u slučaju kada je baza relativno prosta s modulom |
|
Komprehenzije rječnika usklađene su s literalima rječnika tako da se najprije izračunava ključ, a zatim vrijednost |
|
Metoda object.__reduce__() sada može vratiti n-torku duljine od dva do šest elemenata |
Promjene ugrađenih modula:
asyncio.run() prešla je iz privremenog u stabilni API |
Dovršeno |
Pokretanje python -m asyncio pokreće izvorno asinkroni REPL |
|
Iznimka asyncio.CancelledError sada nasljeđuje od BaseException umjesto od Exception i više ne nasljeđuje od concurrent.futures.CancelledError |
Dovršeno |
Dodana je asyncio.Task.get_coro() za dohvat omotane korutine unutar asyncio.Task |
|
Asyncio zadaci sada se mogu imenovati, bilo prosljeđivanjem ključnog argumenta name funkciji asyncio.create_task() ili metodi create_task() petlje događaja, bilo pozivanjem metode set_name() na objektu zadatka |
|
Dodana je podrška za Happy Eyeballs u asyncio.loop.create_connection(). Za određivanje ponašanja dodana su dva nova parametra: happy_eyeballs_delay i interleave. |
|
get_objects() sada može primiti opcionalni parametar generation koji označava generaciju iz koje se dohvaćaju objekti. (Napominjemo, međutim, da iako je gc ugrađen, get_objects() nije implementirana za MicroPython) |
|
Dodana je nova funkcija math.dist() za izračun euklidske udaljenosti između dviju točaka |
|
Proširena je funkcija math.hypot() za obradu više dimenzija |
|
Dodana je nova funkcija math.prod(), kao analogna funkciji sum(), koja vraća umnožak „početne” vrijednosti (zadano: 1) puta iterabilni niz brojeva |
|
Dodane su dvije nove kombinatorne funkcije math.perm() i math.comb() |
|
Dodana je nova funkcija math.isqrt() za izračun točnih cjelobrojnih kvadratnih korijena bez pretvorbe u brojeve s pomičnim zarezom |
|
Funkcija math.factorial() više ne prihvaća argumente koji nisu nalik cijelom broju |
Dovršeno |
Dodana je nova funkcija sys.unraisablehook() koja se može nadjačati radi upravljanja načinom obrade „neizazivljivih iznimaka” |
|