Efter ett och ett halvt Är av utveckling större programmeringssprÄksversion . Korrigerande uppdateringar för Python 3.8-grenen slÀpps inom 18 mÄnader. Kritiska sÄrbarheter kommer att ÄtgÀrdas i 5 Är fram till oktober 2024. Korrigerande uppdateringar för 3.8-grenen kommer att slÀppas varannan mÄnad, med den första korrigerande versionen av Python 3.8.1 planerad till december.
Bland de tillagda :
- uppdragsoperationer inom komplexa uttryck. Med den nya operatorn ":=" Àr det möjligt att utföra vÀrdetilldelningsoperationer i andra uttryck, till exempel för att undvika dubbla funktionsanrop i villkorssatser och vid definition av loopar:
om (n := len(a)) > 10:
.while (block := f.read(256)) != ":
. - ny syntax för att ange funktionsargument. NÀr du rÀknar upp argument under en funktionsdefinition kan du nu ange ett "/" för att separera argument som endast kan tilldelas vÀrden baserat pÄ den ordning i vilken vÀrdena rÀknas upp under funktionsanropet, frÄn argument som kan tilldelas i valfri ordning (variabel=vÀrdesyntax) ). PÄ den praktiska sidan tillÄter den nya funktionen funktioner i Python att helt emulera beteendet hos befintliga funktioner i C, och Àven undvika bindning till specifika namn, till exempel om parameternamnet planeras att Àndras i framtiden.
"/"-flaggan kompletterar den tidigare tillagda "*"-flaggan, och separerar variabler för vilka endast en tilldelning i formen "variabel=vÀrde" Àr tillÀmplig. Till exempel, i funktionen "def f(a, b, /, c, d, *, e, f):" kan variablerna "a" och "b" endast tilldelas i den ordning som vÀrdena Àr listade ,
variablerna "e" och "f", endast genom tilldelningen "variabel=vÀrde", och variablerna "c" och "d" pÄ nÄgot av följande sÀtt:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, s=30, d=40, e=50, f=60) - nya C API
för att konfigurera Python-initieringsparametrar, vilket tillÄter fullstÀndig kontroll över allt och tillhandahÄller avancerade felhanteringsfaciliteter. Det föreslagna API:et gör det enkelt att bÀdda in Python-tolkfunktionalitet i andra C-applikationer; - nytt Vectorcall-protokoll för snabbare Ätkomst till objekt skrivna pÄ C-sprÄk. I CPython 3.8 Àr Ätkomsten till Vectorcall fortfarande begrÀnsad till intern anvÀndning, överföring till kategorin allmÀnt tillgÀngliga API:er planeras i CPython 3.9;
- anrop till Runtime Audit Hooks, som ger applikationer och ramverk i Python tillgÄng till lÄgnivÄinformation om skriptets framsteg för att granska utförda ÄtgÀrder (till exempel kan du spÄra import av moduler, öppna filer, anvÀnda ett spÄr, komma Ät nÀtverksuttag, köra kod genom exec, eval och run_mod);
- I modulen stöd för Pickle 5-protokollet, som anvÀnds för att serialisera och deserialisera objekt. Pickle lÄter dig optimera överföringen av stora mÀngder data mellan Python-processer i multi-core och multi-nod-konfigurationer genom att minska antalet minneskopieringsoperationer och tillÀmpa ytterligare optimeringstekniker som att anvÀnda dataspecifika komprimeringsalgoritmer. Den femte versionen av protokollet Àr kÀnd för tillÀgget av ett överföringslÀge utanför bandet, dÀr data kan sÀndas separat frÄn huvudströmmen av pickle.
- Som standard Àr den fjÀrde versionen av Pickle-protokollet aktiverad, vilket, jÀmfört med den tredje versionen som tidigare erbjöds som standard, möjliggör högre prestanda och en minskning av storleken pÄ överförda data;
- I modulen Flera nya funktioner introduceras:
- Klass för associativa arrayer dĂ€r typinformation Ă€r explicit specificerad för data som Ă€r associerade med nycklarna ("TypedDict('Point2D', x=int, y=int, label=str)â).
- Typ , som lÄter dig begrÀnsa en parameter eller returnera vÀrde till ett fÄtal fördefinierade vÀrden ("Literal['ansluten', 'bortkopplad']").
- Design "", vilket gör det möjligt att definiera vÀrden för variabler, funktioner, metoder och klasser som inte kan Àndras eller omtilldelas ("pi: Final[float] = 3.1415926536").
- Lade till möjligheten att tilldela en cache för kompilerade filer med bytecode, sparade i ett separat FS-trÀd och separerat frÄn katalogerna med koden. SökvÀgen för att spara filer med bytekod stÀlls in via en variabel eller alternativet "-X pycache_prefix";
- möjligheten att skapa felsökningsbyggen av Python som anvÀnder en ABI som Àr identisk med versionen, vilket lÄter dig ladda tillÀgg skrivna pÄ SI-sprÄk, kompilerade för stabila utgÄvor, i felsökningsbyggen;
- f-strÀngar (formaterade bokstaver med prefixet 'f') ger stöd för operatorn = (till exempel "f'{expr=}'"), vilket lÄter dig konvertera ett uttryck till text för enklare felsökning. Till exempel:
âșâșâș anvĂ€ndare = 'eric_idle'
âșâșâș medlem_sedan = datum(1975, 7, 31)
âșâșâș f'{user=} {member_since=}'
"user='eric_idle' member_since=datetime.date(1975, 7, 31)" - Uttryck"» fÄr anvÀndas inuti ett block ;
- Ny modul tillagd , som tillÄter anvÀndning av delade minnessegment i multiprocesskonfigurationer;
- PÄ plattformen Windows asyncio-implementeringen har flyttats till att anvÀnda en klass ;
- Prestandan för LOAD_GLOBAL-instruktionen har ökat med cirka 40 % pÄ grund av anvÀndningen av en ny objektkodscachemekanism.
KĂ€lla: opennet.ru
