Nakon godinu i po dana razvoja predstavljen glavno izdanje programskog jezika Python 3.8. Korektivna ažuriranja za granu Python 3.8 planirano puštanje u roku od 18 mjeseci. Kritične ranjivosti će biti ispravljene na 5 godina do oktobra 2024. Ispravna ažuriranja za granu 3.8 će biti objavljena svaka dva mjeseca, a prvo ispravno izdanje Python-a 3.8.1 zakazano je za decembar.
podrška operacije dodjeljivanja unutar složenih izraza. Sa novim “:=” operatorom, moguće je izvršiti operacije dodjeljivanja vrijednosti unutar drugih izraza, na primjer, kako bi se izbjegli dvostruki pozivi funkcija u uvjetnim izrazima i prilikom definiranja petlji:
ako (n := len(a)) > 10:
...
while (blok := f.read(256)) != ":
...
podrška nova sintaksa za specificiranje argumenata funkcije. Prilikom nabrajanja argumenata tokom definicije funkcije, sada možete navesti "/" da odvojite argumente kojima se mogu dodijeliti vrijednosti samo na osnovu redoslijeda u kojem se vrijednosti nabrajaju tokom poziva funkcije, od argumenata koji se mogu dodijeliti bilo kojim redoslijedom (sintaksa varijabla=vrijednost) ). S praktične strane, nova karakteristika omogućava funkcijama u Pythonu da u potpunosti oponašaju ponašanje postojećih funkcija u C-u, a također i izbjegavanje vezivanja za određena imena, na primjer, ako se planira mijenjanje imena parametra u budućnosti.
Oznaka “/” nadopunjuje prethodno dodanu “*” zastavicu, odvajajući varijable za koje je primjenjiva samo dodjela u obliku “varijable=vrijednost”. Na primjer, u funkciji "def f(a, b, /, c, d, *, e, f):" varijable "a" i "b" mogu se dodijeliti samo redoslijedom kojim su navedene vrijednosti ,
varijable “e” i “f”, samo kroz dodjelu “varijable=vrijednost”, i varijable “c” i “d” na bilo koji od sljedećih načina:
Dodano novi C API
da konfigurišete Python parametre inicijalizacije, omogućavajući potpunu kontrolu nad svim konfiguraciju i pružanje naprednih mogućnosti za rukovanje greškama. Predloženi API olakšava ugrađivanje funkcionalnosti Python interpretera u druge C aplikacije;
Implementirano novi Vectorcall protokol za brži pristup objektima napisanim u C jeziku. U CPython-u 3.8 pristup Vectorcall-u je i dalje ograničen na internu upotrebu, a prelazak u kategoriju javno dostupnih API-ja planiran je u CPython-u 3.9;
Dodano poziva Runtime Audit Hooks, koji aplikacijama i okvirima u Pythonu pružaju pristup informacijama niskog nivoa o napretku skripte za reviziju izvršenih radnji (na primjer, možete pratiti uvoz modula, otvaranje datoteka, korištenjem praćenja, pristup mrežnim utičnicama, pokretanje koda kroz exec, eval i run_mod);
U modulu kiseli krastavacosiguran podrška za Pickle 5 protokol, koji se koristi za serijalizaciju i deserializaciju objekata. Pickle vam omogućava da optimizirate prijenos velikih količina podataka između Python procesa u konfiguracijama s više jezgara i više čvorova smanjenjem broja operacija kopiranja memorije i primjenom dodatnih tehnika optimizacije kao što je korištenje algoritama kompresije specifičnih za podatke. Peta verzija protokola je značajna po dodavanju načina prijenosa izvan opsega, u kojem se podaci mogu prenositi odvojeno od glavnog toka kiselog toka.
Podrazumevano je aktivirana četvrta verzija Pickle protokola, koja, u poređenju sa trećom verzijom koja je ranije bila podrazumevano ponuđena, omogućava veće performanse i smanjenje veličine prenetih podataka;
U modulu tipkanje Uvedeno je nekoliko novih funkcija:
Класс TypedDict za asocijativne nizove u kojima su informacije o tipu eksplicitno specificirane za podatke povezane sa ključevima (“TypedDict('Point2D', x=int, y=int, label=str)”).
Tip Bukvalno, koji vam omogućava da ograničite parametar ili povratnu vrijednost na nekoliko unaprijed definiranih vrijednosti („Literal['connected', 'disconnected']").
Izgradnja "Final", što omogućava definiranje vrijednosti varijabli, funkcija, metoda i klasa koje se ne mogu mijenjati ili ponovno dodijeliti ("pi: Final[float] = 3.1415926536").
Dodata je mogućnost dodjeljivanja keš memorije za kompajlirane datoteke sa bajt kodom, sačuvane u posebnom FS stablu i odvojene od direktorija sa kodom. Putanja za čuvanje datoteka sa bajt kodom se postavlja preko varijable PYTHONPYCACHEPREFIX ili opciju "-X pycache_prefix";
Implementirano mogućnost kreiranja debug build-ova Python-a koji koriste ABI identičan izdanju, što vam omogućava da učitate ekstenzije napisane na SI jeziku, kompajlirane za stabilna izdanja, u debug buildovima;
f-stringovi (formatirani literali sa prefiksom 'f') pružaju podršku za operator = (na primjer, "f'{expr=}'"), koji vam omogućava da pretvorite izraz u tekst radi lakšeg otklanjanja grešaka. Na primjer: