Python 3.8 -ohjelmointikielen julkaisu

Puolen vuoden kehitystyön jälkeen esitetty suuri ohjelmointikielijulkaisu Python 3.8. Korjaavat päivitykset Python 3.8 -haaralle on suunniteltu vapauttaa 18 kuukauden kuluessa. Kriittiset haavoittuvuudet korjataan 5 vuodeksi lokakuuhun 2024 saakka. Korjaavat päivitykset 3.8-haaralle julkaistaan ​​kahden kuukauden välein, ja Python 3.8.1:n ensimmäinen korjaava julkaisu on määrä julkaista joulukuussa.

Lisättyjen joukossa innovaatioita:

  • Tukea määritysoperaatiot monimutkaisissa lausekkeissa. Uudella “:=”-operaattorilla on mahdollista suorittaa arvonmääritystoimintoja muiden lausekkeiden sisällä, esimerkiksi välttääksesi kaksoisfunktiokutsuja ehdollisissa lauseissa ja silmukoita määriteltäessä:

    jos (n := len(a)) > 10:
    ...

    while (lohko := f.read(256)) != ":
    ...

  • Tukea uusi syntaksi funktion argumenttien määrittämiseen. Kun luet argumentteja funktion määrittelyn aikana, voit nyt määrittää "/" erottamaan argumentit, joille voidaan antaa arvoja vain sen mukaan, missä järjestyksessä arvot luetellaan funktiokutsun aikana, argumenteista, jotka voidaan määrittää. missä tahansa järjestyksessä (muuttuja=arvosyntaksi) ). Käytännön puolella uusi ominaisuus mahdollistaa Pythonin funktioiden emuloinnin täysin C:n olemassa olevien funktioiden käyttäytymisen ja myös välttää sitoutumisen tiettyihin nimiin, jos esimerkiksi parametrin nimeä on tarkoitus muuttaa tulevaisuudessa.

    Lippu "/" täydentää aiemmin lisättyä "*" -lippua erottamalla muuttujat, joille voidaan soveltaa vain osoitusta muodossa "muuttuja=arvo". Esimerkiksi funktiossa "def f(a, b, /, c, d, *, e, f):" muuttujat "a" ja "b" voidaan määrittää vain siinä järjestyksessä, jossa arvot on listattu. ,
    muuttujat "e" ja "f" vain määrityksellä "muuttuja=arvo" ja muuttujat "c" ja "d" jollakin seuraavista tavoista:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • lisättyä uusi C API
    Python-alustusparametrien määrittäminen, mikä mahdollistaa täydellisen hallinnan kokoonpano ja tarjoaa edistyneitä virheenkäsittelypalveluita. Ehdotettu API helpottaa Python-tulkkitoimintojen upottamista muihin C-sovelluksiin;

  • Toteutettu uusi Vectorcall-protokolla mahdollistaa nopeamman pääsyn C-kielellä kirjoitettuihin objekteihin. CPython 3.8:ssa pääsy Vectorcalliin on edelleen rajoitettu sisäiseen käyttöön; CPython 3.9:ssä suunnitellaan siirtoa julkisesti käytettävien API:iden luokkaan.
  • Lisätty kutsua Runtime Audit Hooksille, jotka tarjoavat Pythonissa sovelluksille ja kehyksille pääsyn matalan tason tietoihin komentosarjan edistymisestä suoritettujen toimien tarkastamiseksi (esimerkiksi voit seurata moduulien tuontia, tiedostojen avaamista jäljityksen avulla, pääsy verkkopistorasioihin, koodin suorittaminen exec-, eval- ja run_mod -ohjelmien kautta);
  • Moduulissa suolakurkku turvattu Pickle 5 -protokollan tuki, jota käytetään objektien sarjoitukseen ja sarjoitukseen. Picklen avulla voit optimoida suurten tietomäärien siirron Python-prosessien välillä moniytimisissä ja monisolmuisissa kokoonpanoissa vähentämällä muistikopiointitoimintojen määrää ja käyttämällä lisäoptimointitekniikoita, kuten käyttämällä tietokohtaisia ​​pakkausalgoritmeja. Protokollan viides versio on huomionarvoinen siitä, että siihen on lisätty kaistan ulkopuolinen lähetystila, jossa dataa voidaan siirtää erikseen pääpiippuvirrasta.
  • Oletuksena on aktivoitu Pickle-protokollan neljäs versio, joka verrattuna aiemmin oletusarvoisesti tarjottuun kolmanteen versioon mahdollistaa suuremman suorituskyvyn ja lähetettävien tietojen koon pienentämisen;
  • Moduulissa konekirjoitus Useita uusia ominaisuuksia esitellään:
    • Luokka TypedDict assosiatiivisille taulukoille, joissa avaimiin liittyville tiedoille on erikseen määritetty tyyppitiedot ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tyyppi kirjaimellinen, jonka avulla voit rajoittaa parametrin tai palauttaa arvon muutamaan ennalta määritettyyn arvoon ("Literal["yhdistetty", "katkaistu"]).
    • Rakentaminen"pää", jonka avulla voidaan määrittää muuttujien, funktioiden, menetelmien ja luokkien arvot, joita ei voi muuttaa tai määrittää uudelleen ("pi: Final[float] = 3.1415926536").
  • Lisätty mahdollisuus määrittää välimuisti käännetyille tiedostoille tavukoodilla, tallennettu erilliseen FS-puuhun ja erotettu koodilla olevista hakemistoista. Polku tiedostojen tallentamiseen tavukoodilla asetetaan muuttujan kautta PYTHONPYCACHEPREFIX tai vaihtoehto "-X pycache_prefix";
  • Toteutettu kyky luoda Pythonista virheenkorjauskoonnuksia, jotka käyttävät julkaisun kanssa identtistä ABI:ta, jonka avulla voit ladata SI-kielellä kirjoitettuja laajennuksia, jotka on käännetty vakaille julkaisuille, virheenkorjauskoonnoksiin;
  • f-merkkijonot (muotoillut literaalit, joiden etuliite on 'f') tukevat =-operaattoria (esimerkiksi "f'{expr=}'"), jonka avulla voit muuntaa lausekkeen tekstiksi virheenkorjauksen helpottamiseksi. Esimerkiksi:

    ››› user = 'eric_idle'
    ››› jäsen_alkaen = päivämäärä(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Ilmaisu "jatkaa» sallittu käyttää lohkon sisällä vihdoin;
  • Uusi moduuli lisätty multiprocessing.shared_memory, joka mahdollistaa jaettujen muistisegmenttien käytön moniprosessikokoonpanoissa;
  • Windows-alustalla asyncio-toteutus on siirretty käyttämään luokkaa ProactorEventLoop;
  • LOAD_GLOBAL-käskyn suorituskykyä on parannettu noin 40 % uuden objektikoodin välimuistimekanismin käytön ansiosta.

Lähde: opennet.ru

Lisää kommentti