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” | |