Efter halvandet års udvikling betydningsfuld udgivelse af programmeringssproget . Korrigerende opdateringer for Python 3.8-serien udsendes inden for 18 måneder. Kritiske sårbarheder vil blive rettet i 5 år frem til oktober 2024. Korrigerende opdateringer for version 3.8 vil blive udgivet hver anden måned, den første korrigerende udgivelse, Python 3.8.1, er planlagt til december.
Blandt de tilføjede :
- tildelingsoperationer inden for komplekse udtryk. Med den nye operator ':=' blev det muligt at udføre tildelingsoperationer inden i andre udtryk, for eksempel for at undgå dobbelt kald af funktioner i betingede udsagn og ved at definere løkker:
if (n := len(a)) > 10:
…while (block := f.read(256)) != »:
… - den nye syntaks til at definere funktionsargumenter. Når man angiver argumenter under funktionsdefinition, kan man nu angive tegn '/', som adskiller argumenter, der kun kan tildeles baseret på rækkefølgen under funktionsopkald, fra argumenter, der tillader tildeling i vilkårlig rækkefølge (syntaks 'variabel=værdi'). Praktisk set gør denne mulighed det muligt at emulere opførelsen af eksisterende funktioner i C sprog i Python-funktioner, samt undgå binding til specifikke navne, for eksempel hvis parameterens navn planlægges at blive ændret i fremtiden.
Flaget '/' supplerer det tidligere tilføjede tegn '*', der adskiller variabler, for hvilke kun tildeling i formen 'variabel=værdi' gælder. For eksempel i funktionen 'def f(a, b, /, c, d, *, e, f):' kan variablerne 'a' og 'b' kun tildeles i rækkefølge af de angivne værdier,
variablerne 'e' og 'f', kun gennem tildeling 'variabel=værdi', mens variablerne 'c' og 'd' kan tildeles med begge metoder:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - det nye C API
til konfiguration af initialiseringsparametre for Python, der giver fuld kontrol over hele og tilbyder udvidede fejlhåndteringsfunktioner. Det foreslåede API gør det lettere at integrere Pythons fortolkefunktionalitet i andre C-baserede applikationer; - den nye Vectorcall-protokol til hurtigere adgang til objekter skrevet i C. I CPython 3.8 er adgangen til Vectorcall endnu begrænset til intern brug, og en offentlig tilgængelig API-oversættelse er planlagt i CPython 3.9;
- Runtime Audit Hooks-anmodninger, der giver Python-programmer og -rammer adgang til lavniveauoplysninger om scriptets kørselsforløb for at udføre revision af udførte handlinger (for eksempel kan man spore import af moduler, åbning af filer, brug af sporingsfunktioner, adgang til netværkssokler, udførelse af kode via exec, eval og run_mod);
- I modulet understøttelse af Pickle 5-protokollen, der anvendes til serialisering og deserialisering af objekter. Pickle muliggør optimering af overførsel af store data mængder mellem Python-processer i multicore- og klusterkonfigurationer ved at reducere antallet af hukommelseskopieringsoperationer og anvende yderligere optimeringsteknikker, såsom at anvende datakravsspecifikke komprimeringsalgoritmer. Den femte version af protokollen er bemærkelsesværdig for tilføjelsen af en out-of-band transmitteringsmetode, hvor data kan overføres adskilt fra hovedpickle-strømmen.
- Som standard er den fjerde version af Pickle-protokollen aktiveret, som i forhold til den tidligere default tredje version giver en højere ydeevne og en reduktion af størrelsen på de overførte data;
- I modulet flere nye muligheder præsenteret:
- Klasse for associative arrays, hvor der eksplicit angives typeinformation for de data, der er knyttet til nøglerne ("TypedDict('Point2D', x=int, y=int, label=str)").
- Type , hvilket giver mulighed for at begrænse en parameter eller returneret værdi til flere foruddefinerede værdier ("Literal['connected', 'disconnected']").
- Konstruktionen "", som giver mulighed for at definere værdier for variable, funktioner, metoder og klasser, der ikke kan ændres eller omdeles ("pi: Final[float] = 3.1415926536").
- Muligheden for at tildele en cache til de kompilerede bytecode-filer, der gemmes i en separat filstruktur adskilt fra koden mapper. Stien til lagring af bytecode-filer angives via variablen eller indstillingen "-X pycache_prefix";
- muligheden for at oprette debug-builds af Python, der bruger den samme ABI som udgivelser, hvilket muliggør indlæsning af C-udvidelser, der er bygget til stabile versioner, i debug-builds;
- I f-strenge (formaterede litteraler med præfikset ‘f’) er der support for operatoren «=» (f.eks. «f'{expr=}'»), som gør det muligt at konvertere et udtryk til tekst for at lette fejlfinding. For eksempel:
››› bruger = ‘eric_idle’
››› medlem_siden = date(1975, 7, 31)
››› f'{bruger=} {medlem_siden=}’
«bruger=’eric_idle’ medlem_siden=datetime.date(1975, 7, 31)» - Udtrykket «» må bruges inden for blokken ;
- En ny modul er tilføjet , som tillader brug af segmenter af delt hukommelse i multiprocessor konfigurationer;
- På Windows-platformen er implementeringen af asyncio oversat til at bruge klassen ;
- Ydeevnen af LOAD_GLOBAL-instruksen er forbedret med cirka 40% takket være en ny mekanisme til caching af objekkode.
Kilde: opennet.ru
