Efter halvandet års udvikling præsenteret større udgivelse af programmeringssprog Python 3.8. Korrigerende opdateringer til Python 3.8-grenen er planlagt frigives inden for 18 måneder. Kritiske sårbarheder vil blive rettet i 5 år indtil oktober 2024. Korrigerende opdateringer til 3.8-grenen vil blive frigivet hver anden måned, med den første korrigerende udgivelse af Python 3.8.1 planlagt til december.
Support opgaveoperationer inden for komplekse udtryk. Med den nye ":="-operator er det muligt at udføre værditildelingsoperationer inde i andre udtryk, for eksempel for at undgå dobbeltfunktionskald i betingede sætninger og ved definition af sløjfer:
hvis (n := len(a)) > 10:
...
while (blok := f.read(256)) != ":
...
Support ny syntaks til angivelse af funktionsargumenter. Når du optæller argumenter under en funktionsdefinition, kan du nu angive et "/" for at adskille argumenter, der kun kan tildeles værdier baseret på den rækkefølge, værdierne er opregnet i under funktionskaldet, fra argumenter, der kan tildeles i vilkårlig rækkefølge (variabel=værdisyntaks) ). På den praktiske side tillader den nye funktion funktioner i Python fuldstændig at efterligne adfærden af eksisterende funktioner i C, og også undgå binding til specifikke navne, for eksempel hvis parameternavnet planlægges ændret i fremtiden.
"/"-flaget supplerer det tidligere tilføjede "*"-flag og adskiller variabler, for hvilke kun en tildeling i formen "variabel=værdi" er gældende. For eksempel, i funktionen "def f(a, b, /, c, d, *, e, f):" kan variablerne "a" og "b" kun tildeles i den rækkefølge værdierne er angivet ,
variablerne "e" og "f", kun gennem tildelingen "variabel=værdi", og variablerne "c" og "d" på en af følgende måder:
Tilføjet ny C API
at konfigurere Python initialiseringsparametre, hvilket giver fuld kontrol over alt konfiguration og leverer avancerede fejlhåndteringsfaciliteter. Den foreslåede API gør det nemt at integrere Python-fortolkerfunktionalitet i andre C-applikationer;
Implementeret ny Vectorcall-protokol for hurtigere adgang til objekter skrevet i C-sprog. I CPython 3.8 er adgangen til Vectorcall stadig begrænset til intern brug, overførsel til kategorien af offentligt tilgængelige API'er er planlagt i CPython 3.9;
Tilføjet opkald til Runtime Audit Hooks, som giver applikationer og rammer i Python adgang til information på lavt niveau om scriptets fremskridt for at auditere de udførte handlinger (f.eks. kan du spore importen af moduler, åbne filer, ved hjælp af et spor, adgang til netværkssockets, kørende kode gennem exec, eval og run_mod);
I modulet lagesikret understøttelse af Pickle 5-protokollen, der bruges til at serialisere og deserialisere objekter. Pickle giver dig mulighed for at optimere overførslen af store mængder data mellem Python-processer i multi-core- og multi-node-konfigurationer ved at reducere antallet af hukommelseskopieringsoperationer og anvende yderligere optimeringsteknikker, såsom brug af dataspecifikke komprimeringsalgoritmer. Den femte version af protokollen er bemærkelsesværdig for tilføjelsen af en out-of-band transmissionstilstand, hvor data kan transmitteres separat fra den primære pickle-strøm.
Som standard er den fjerde version af Pickle-protokollen aktiveret, hvilket sammenlignet med den tredje version, der tidligere blev tilbudt som standard, giver mulighed for højere ydeevne og en reduktion i størrelsen af transmitterede data;
I modulet at skrive Flere nye funktioner introduceres:
Klasse Typedict for associative arrays, hvor typeinformation er eksplicit angivet for de data, der er knyttet til nøglerne ("TypedDict('Point2D', x=int, y=int, label=str)").
Type bogstavelig, som giver dig mulighed for at begrænse en parameter eller returnere værdi til et par foruddefinerede værdier ("Literal['connected', 'disconnected']").
Design "Endelig", som gør det muligt at definere værdierne af variabler, funktioner, metoder og klasser, der ikke kan ændres eller gentildeles ("pi: Final[float] = 3.1415926536").
Tilføjet muligheden for at tildele en cache til kompilerede filer med bytekode, gemt i et separat FS-træ og adskilt fra mapperne med koden. Stien til at gemme filer med bytekode indstilles via en variabel PYTHONPYCACHEPREFIX eller muligheden "-X pycache_prefix";
Implementeret evnen til at skabe debug builds af Python, der bruger en ABI identisk med udgivelsen, som giver dig mulighed for at indlæse udvidelser skrevet i SI sprog, kompileret til stabile udgivelser, i debug builds;
f-strenge (formaterede bogstaver foran med 'f') understøtter =-operatoren (f.eks. "f'{expr=}'"), som giver dig mulighed for at konvertere et udtryk til tekst for lettere fejlretning. For eksempel: