Utgivning av programmeringssprÄket Python 3.8

Efter ett och ett halvt Är av utveckling presenteras större programmeringssprÄksversion python 3.8. Korrigerande uppdateringar för Python 3.8-grenen planeras 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 innovationer:

  • Support 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)) != ":
    .

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

  • tillsatt nya C API
    för att konfigurera Python-initieringsparametrar, vilket tillÄter fullstÀndig kontroll över allt konfiguration och tillhandahÄller avancerade felhanteringsfaciliteter. Det föreslagna API:et gör det enkelt att bÀdda in Python-tolkfunktionalitet i andra C-applikationer;
  • Genomfört 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;
  • Lagt till 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 Ă€ttikslag sĂ€krad 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 skriva Flera nya funktioner introduceras:
    • Klass TypdDict 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 bokstavlig, som lĂ„ter dig begrĂ€nsa en parameter eller returnera vĂ€rde till ett fĂ„tal fördefinierade vĂ€rden ("Literal['ansluten', 'bortkopplad']").
    • Design "Slutlig", 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 PYTHONPYCACHEPREFIX eller alternativet "-X pycache_prefix";
  • Genomfört 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"fortsĂ€tta» fĂ„r anvĂ€ndas inuti ett block slutligen;
  • Ny modul tillagd multiprocessing.shared_memory, som tillĂ„ter anvĂ€ndning av delade minnessegment i multiprocesskonfigurationer;
  • PĂ„ plattformen Windows asyncio-implementeringen har flyttats till att anvĂ€nda en klass ProactorEventLoop;
  • Prestandan för LOAD_GLOBAL-instruktionen har ökat med cirka 40 % pĂ„ grund av anvĂ€ndningen av en ny objektkodscachemekanism.

KĂ€lla: opennet.ru

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