Programmeerimiskeele Python 3.8 väljalase

Peale poolteiseaastast arengut esitatakse peamise programmeerimiskeele väljalase Python 3.8. Python 3.8 haru parandavad värskendused on kavas vabastada 18 kuu jooksul. Kriitilised haavatavused parandatakse viieks aastaks kuni 5. aasta oktoobrini. 2024 haru parandavad värskendused avaldatakse iga kahe kuu tagant, Python 3.8 esimene korrigeeriv väljalase on kavandatud detsembrisse.

Lisatud hulgas uuendused:

  • Toetama määramisoperatsioonid keerulistes avaldistes. Uue operaatoriga “:=” on võimalik teostada väärtuste määramise operatsioone teiste avaldiste sees, näiteks vältida topeltfunktsioonide väljakutseid tingimuslausetes ja tsüklite defineerimisel:

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

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

  • Toetama uus süntaks funktsiooni argumentide määramiseks. Funktsiooni definitsiooni ajal argumentide loendamisel saate nüüd määrata "/", et eraldada argumendid, millele saab määrata väärtusi ainult funktsioonikutse ajal väärtuste loendamise järjekorra alusel, argumentidest, mida saab määrata. suvalises järjekorras (muutuja=väärtuse süntaks) ). Praktilise poole pealt võimaldab uus funktsioon Pythonis olevatel funktsioonidel täielikult emuleerida C-s olemasolevate funktsioonide käitumist ning samuti vältida sidumist kindlate nimedega, näiteks kui parameetri nime on plaanis tulevikus muuta.

    Lipp “/” täiendab eelnevalt lisatud “*” lippu, eraldades muutujad, mille puhul on rakendatav ainult omistamine kujul “muutuja=väärtus”. Näiteks funktsioonis "def f(a, b, /, c, d, *, e, f):" saab muutujaid "a" ja "b" määrata ainult väärtuste loendi järjekorras. ,
    muutujad "e" ja "f" ainult ülesandega "muutuja=väärtus" ning muutujad "c" ja "d" ühel järgmistest viisidest:

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

  • Lisatud uus C API
    Pythoni lähtestamisparameetrite konfigureerimiseks, võimaldades kõigi üle täielikku kontrolli konfiguratsiooni ja täiustatud vigade käsitlemise võimaluste pakkumine. Pakutud API muudab Pythoni tõlgi funktsioonide manustamise teistesse C-rakendustesse hõlpsaks;

  • Rakendatud uus Vectorcall protokoll kiiremaks juurdepääsuks C-keeles kirjutatud objektidele. CPython 3.8 puhul on juurdepääs Vectorcallile endiselt piiratud sisekasutusega, üleminek avalikult juurdepääsetavate API-de kategooriasse on kavandatud versioonis CPython 3.9;
  • Lisatud kõned Runtime Audit Hooksidele, mis pakuvad Pythonis rakendustele ja raamistikele juurdepääsu madala taseme teabele skripti edenemise kohta, et auditeerida tehtud toiminguid (näiteks saate jälgida moodulite importi, failide avamist, jälgi kasutades, juurdepääs võrgupesadele, koodi käivitamine läbi exec, eval ja run_mod);
  • Moodulis hapukurk kindlustatud Pickle 5 protokolli tugi, mida kasutatakse objektide serialiseerimiseks ja deserialiseerimiseks. Pickle võimaldab optimeerida suurte andmemahtude ülekandmist Pythoni protsesside vahel mitmetuumaliste ja mitme sõlmega konfiguratsioonides, vähendades mälu kopeerimise operatsioonide arvu ja rakendades täiendavaid optimeerimistehnikaid, näiteks kasutades andmespetsiifilisi tihendusalgoritme. Protokolli viies versioon on tähelepanuväärne ribavälise edastusrežiimi lisamisega, mille puhul saab andmeid edastada peamisest hapukurgivoost eraldi.
  • Vaikimisi on aktiveeritud Pickle protokolli neljas versioon, mis võrreldes varem vaikimisi pakutud kolmanda versiooniga võimaldab suuremat jõudlust ja edastatavate andmete mahtu vähendada;
  • Moodulis kirjutades Tutvustatakse mitmeid uusi funktsioone:
    • Klass TrükitudDict assotsiatiivsete massiivide jaoks, mille tüübiteave on selgelt määratud võtmetega seotud andmete jaoks ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Tüüp Kirjalik, mis võimaldab piirata parameetrit või tagastatavat väärtust mõne eelmääratletud väärtusega ("Literal["ühendatud", "lahti ühendatud"]).
    • Disain"Lõplik", mis võimaldab määratleda muutujate, funktsioonide, meetodite ja klasside väärtusi, mida ei saa muuta ega ümber määrata ("pi: Final[float] = 3.1415926536").
  • Lisatud võimalus määrata kompileeritud failidele vahemälu baitkoodiga, salvestatud eraldi FS-i puusse ja eraldatud koodiga kataloogidest. Failide baitkoodiga salvestamise tee määratakse muutuja kaudu PÜTHONPÜKACHEPREFIKS või valik "-X pycache_prefix";
  • Rakendatud võimalus luua Pythoni silumisjärge, mis kasutavad väljalaskega identset ABI-d, mis võimaldab silumisjärkudes laadida SI-keeles kirjutatud laiendusi, mis on kompileeritud stabiilsete väljalasete jaoks;
  • f-stringid (vormindatud literaalid, mille eesliit on 'f') toetavad operaatorit = (näiteks "f'{expr=}'"), mis võimaldab teil silumise hõlbustamiseks teisendada avaldise tekstiks. Näiteks:

    ››› kasutaja = 'eric_idle'
    ››› liige_alates = kuupäev(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Väljend "jätkama» lubatud kasutada ploki sees lõpuks;
  • Lisatud uus moodul multiprocessing.shared_memory, mis võimaldab kasutada jagatud mälu segmente mitme protsessiga konfiguratsioonides;
  • Windowsi platvormil on asyncio teostus viidud klassi kasutama ProactorEventLoop;
  • Käsu LOAD_GLOBAL jõudlus on uue objektikoodi vahemällu salvestamise mehhanismi kasutamise tõttu suurenenud ligikaudu 40%.

Allikas: opennet.ru

Lisa kommentaar