Po letu in pol razvoja predstavljeno izdaja glavnega programskega jezika Python 3.8. Popravne posodobitve za vejo Python 3.8 je načrtovana sprostitev v 18 mesecih. Kritične ranljivosti bodo odpravljene 5 let do oktobra 2024. Korektivne posodobitve za vejo 3.8 bodo izdane vsaka dva meseca, prva korektivna izdaja Python 3.8.1 pa je predvidena za december.
Podpora operacije dodelitve znotraj kompleksnih izrazov. Z novim operatorjem »:=« je mogoče izvajati operacije dodeljevanja vrednosti znotraj drugih izrazov, da se na primer izognete dvojnim klicem funkcij v pogojnih stavkih in pri definiranju zank:
če (n := len(a)) > 10:
...
medtem ko (blok := f.read(256)) != ":
...
Podpora nova sintaksa za podajanje funkcijskih argumentov. Ko naštevate argumente med definicijo funkcije, lahko zdaj določite "/", da ločite argumente, ki jim je mogoče dodeliti vrednosti samo na podlagi vrstnega reda, v katerem so vrednosti naštete med klicem funkcije, od argumentov, ki jih je mogoče dodeliti v poljubnem vrstnem redu (skladnja spremenljivka=vrednost) ). S praktičnega vidika nova funkcija omogoča funkcijam v Pythonu, da v celoti posnemajo vedenje obstoječih funkcij v C in se tudi izognejo vezavi na določena imena, na primer, če je ime parametra načrtovano v prihodnosti spremeniti.
Zastavica »/« dopolnjuje predhodno dodano zastavico »*« in ločuje spremenljivke, za katere je uporabna samo dodelitev v obliki »spremenljivka=vrednost«. Na primer, v funkciji "def f(a, b, /, c, d, *, e, f):" spremenljivki "a" in "b" lahko dodelite samo v vrstnem redu, kot so navedene vrednosti ,
spremenljivki “e” in “f”, samo s prireditvijo “spremenljivka=vrednost”, spremenljivki “c” in “d” pa na enega od naslednjih načinov:
Dodano nov C API
za konfiguracijo inicializacijskih parametrov Python, kar omogoča popoln nadzor nad vsemi konfiguracijo in zagotavljanje naprednih zmogljivosti za obravnavo napak. Predlagani API olajša vdelavo funkcionalnosti tolmača Python v druge aplikacije C;
Izvedeno nov protokol Vectorcall za hitrejši dostop do objektov, napisanih v jeziku C. V CPython 3.8 je dostop do Vectorcall še vedno omejen na interno uporabo, prehod v kategorijo javno dostopnih API-jev je predviden v CPython 3.9;
Dodano klice v Runtime Audit Hooks, ki aplikacijam in ogrodjem v Pythonu zagotavljajo dostop do informacij na nizki ravni o napredku skripta za revidiranje izvedenih dejanj (na primer, lahko sledite uvozu modulov, odpiranju datotek, uporabi sledi, dostop do omrežnih vtičnic, izvajanje kode prek exec, eval in run_mod);
V modulu picklezavarovano podpora za protokol Pickle 5, ki se uporablja za serializacijo in deserializacijo predmetov. Pickle vam omogoča optimizacijo prenosa velikih količin podatkov med procesi Python v konfiguracijah z več jedri in več vozlišči z zmanjšanjem števila operacij kopiranja pomnilnika in uporabo dodatnih tehnik optimizacije, kot je uporaba algoritmov stiskanja, specifičnih za podatke. Peta različica protokola je znana po dodatku izvenpasovnega načina prenosa, v katerem se lahko podatki prenašajo ločeno od glavnega toka kumaric.
Privzeto je aktivirana četrta različica protokola Pickle, ki v primerjavi s prej privzeto ponujeno tretjo različico omogoča večjo zmogljivost in zmanjšanje velikosti prenesenih podatkov;
Razred TypedDict za asociativne nize, v katerih so informacije o vrsti izrecno podane za podatke, povezane s ključi (»TypedDict('Point2D', x=int, y=int, label=str)«).
Tip Dobesedno, ki vam omogoča, da omejite parameter ali vrnjeno vrednost na nekaj vnaprej določenih vrednosti (»Literal['connected', 'disconnected']”).
Oblikovanje"konec«, ki omogoča definiranje vrednosti spremenljivk, funkcij, metod in razredov, ki jih ni mogoče spremeniti ali prerazporediti (»pi: Final[float] = 3.1415926536«).
Dodana možnost dodelitve predpomnilnika za prevedene datoteke z bajtno kodo, shranjene v ločenem drevesu FS in ločene od imenikov s kodo. Pot do shranjevanja datotek z bajtno kodo se nastavi preko spremenljivke PYTHONPYCACHEPREFIX ali možnost "-X pycache_prefix";
Izvedeno zmožnost ustvarjanja gradenj Pythona za odpravljanje napak, ki uporabljajo ABI, enak izdaji, kar vam omogoča nalaganje razširitev, napisanih v jeziku SI, prevedenih za stabilne izdaje, v zgradbah za odpravljanje napak;
f-nizi (formatirani literali s predpono 'f') zagotavljajo podporo za operator = (na primer "f'{expr=}'"), ki vam omogoča pretvorbo izraza v besedilo za lažje odpravljanje napak. Na primer: