Release of programming language Python 3.8

Efter ett och ett halvt Ärs utveckling presenteras en betydande release av programmeringssprÄket Python 3.8. Korrigerande uppdateringar för versionen Python 3.8 planeras 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 nyheterna:

  • Support Ă€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)) != “”:
    


  • Support 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)

  • Tillagd ny C API
    för konfiguration av initieringsparametrar för Python, vilket möjliggör fullstÀndig kontroll över hela konfigurationen 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;
  • Implementerad 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;
  • Tillagda 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 pickle Ă€r 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 typing introducerar flera nya funktioner:
    • Klassen TypedDict för associerade arrayer dĂ€r typinformationen för de nyckelbindande data specificeras uttryckligen ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Typ Literal, vilket möjliggör att begrĂ€nsa en parameter eller returvĂ€rde till flera fördefinierade vĂ€rden ("Literal['connected', 'disconnected']").
    • Konstruktionen "Final", 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 PYTHONPYCACHEPREFIX eller alternativet "-X pycache_prefix";
  • Implementerad 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 "continue" Ă€r tillĂ„tet att anvĂ€nda inom blocket finally;
  • En ny modul har lagts till multiprocessing.shared_memory, 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 ProactorEventLoop;
  • 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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster