Efter ett och ett halvt Ärs utveckling en betydande release av programmeringssprÄket . Korrigerande uppdateringar för versionen Python 3.8 att slÀppas under de kommande 18 mÄnaderna. Kritiska sÄrbarheter kommer att ÄtgÀrdas i 5 Är fram till oktober 2024. Korrigerande uppdateringar för version 3.8 kommer att slÀppas varannan mÄnad, den första korrigerande releasen Python 3.8.1 Àr planerad till december.
Bland de tillagda :
- Ă€r tilldelningsoperationer inom komplexa uttryck. Med den nya operatorn â:=â har det blivit möjligt att utföra tilldelningsoperationer inne i andra uttryck, till exempel för att undvika dubbla funktionsanrop i villkorssatser och vid loopdefinitioner:
if (n := len(a)) > 10:
âŠwhile (block := f.read(256)) != ââ:
⊠- ny syntax för funktionsargument. Vid upprĂ€kning av argument vid funktionsdefinition kan ett tecken â/â nu anges, vilket möjliggör separation av argument vars vĂ€rden endast kan tilldelas baserat pĂ„ den ordning i vilken vĂ€rden anges vid funktionsanrop, frĂ„n argument som kan tilldelas i godtycklig ordning (syntaxen âvariabel=vĂ€rdeâ). FrĂ„n ett praktiskt perspektiv gör den nya funktionen det möjligt att helt emulera beteendet hos befintliga funktioner i C i Python-funktioner, samt för att undvika knytningar till specifika namn, till exempel om parameter namnet planeras att Ă€ndras i framtiden.
Flaggan â/â kompletterar den tidigare tillagda indikationen â*â, som separerar variabler för vilka endast 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 vĂ€rden anges,
variablerna âeâ och âfâ endast genom tilldelning âvariabel=vĂ€rdeâ, medan variablerna âcâ och âdâ kan tilldelas pĂ„ nĂ„got av de angivna sĂ€tten:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - ny C API
för konfiguration av initieringsparametrar för Python, vilket möjliggör fullstÀndig kontroll över hela och erbjuder avancerade verktyg för felhantering. Den föreslagna API:n förenklar integreringen av Python-tolkens funktionalitet i andra applikationer skrivna i C; - den nya Vectorcall-protokollet för snabbare Ätkomst till objekt skrivna i C. I CPython 3.8 Àr Ätkomsten till Vectorcall Ànnu begrÀnsad till internt bruk, övergÄngen till offentligt tillgÀngliga API:er Àr planerad i CPython 3.9;
- Runtime Audit Hooks-anrop som ger applikationer och ramverk pÄ Python tillgÄng till lÄg nivÄ information om exekveringsflödet för att genomföra revision av utförda ÄtgÀrder (till exempel kan import av moduler, öppning av filer, anvÀndning av spÄrning, Ätkomst till nÀtverksockets och körning av kod via exec, eval och run_mod spÄras);
- I modulen stödet för Pickle 5-protokollet implementerat, vilket anvÀnds för serialisering och deserialisering av objekt. Pickle möjliggör optimering av överföring av stora datamÀngder mellan Python-processer i flerkÀrniga och klusterkonfigurationer, vilket minskar antalet minneskopieringsoperationer och tillÀmpar ytterligare optimeringstekniker, sÄsom att anvÀnda datorspecifika komprimeringsalgoritmer. Den femte versionen av protokollet Àr anmÀrkningsvÀrd för tillÀgget av ett out-of-band överföringslÀge, dÀr data kan överföras separat frÄn den primÀra pickle-strömmen.
- Den fjÀrde versionen av Pickle-protokollet Àr som standard aktiverad, vilket i jÀmförelse med den tidigare standardversionen tre ger högre prestanda och minskar storleken pÄ överförda data;
- I modulen introducerar flera nya funktioner:
- Klassen för associerade arrayer dÀr typinformationen för de nyckelbindande data specificeras uttryckligen ("TypedDict('Point2D', x=int, y=int, label=str)").
- Typ , vilket möjliggör att begrÀnsa en parameter eller returvÀrde till flera fördefinierade vÀrden ("Literal['connected', 'disconnected']").
- Konstruktionen "", som gör det möjligt att definiera vÀrden för variabler, funktioner, metoder och klasser som inte kan Àndras eller omdefinieras ("pi: Final[float] = 3.1415926536").
- Det har lagts till en möjlighet att tilldela cache för kompilerade bytekodfiler som sparas i en separat filstruktur och Ätskiljs frÄn kataloger med kod. SökvÀgen för att spara bytekodfiler anges via variabeln eller alternativet "-X pycache_prefix";
- möjlighet att skapa debug-byggnader av Python som anvÀnder identisk ABI med release-versionen, vilket möjliggör för debug-byggnader att ladda C-skrivna tillÀgg som Àr skapade för stabila versioner;
- I f-strÀngar (formaterade litteraler med prefixet 'f') har stöd för operatorn '=' lagts till (till exempel, 'f'{expr=}''), som gör det möjligt att konvertera uttrycket till text för att underlÀtta debug-processen. Till exempel:
âșâșâș user = 'eric_idle'
âșâșâș member_since = date(1975, 7, 31)
âșâșâș f'{user=} {member_since=}'
'user='eric_idle' member_since=datetime.date(1975, 7, 31)' - Uttrycket "" Àr tillÄtet att anvÀnda inom blocket ;
- En ny modul har lagts till , vilket tillÄter anvÀndning av delade minnessegment i multiprocess-konfigurationer;
- PÄ Windows-plattformen har implementationen av asyncio övergÄtt till att anvÀnda klassen ;
- Prestandan för LOAD_GLOBAL-instruktionen har ökat med cirka 40 % tack vare anvÀndningen av en ny mekanism för caching av objektkod.
KĂ€lla: opennet.ru
