Python 3.8 programavimo kalbos išleidimas

Po pusantrų metų plėtros pateiktas Pagrindinis programavimo kalbos leidimas python 3.8. Korekciniai Python 3.8 šakos naujinimai planuojama išleisti per 18 mėnesių. Kritiniai pažeidžiamumai bus taisomi 5 metams iki 2024 m. spalio mėn. Korekciniai 3.8 šakos naujinimai bus išleidžiami kas du mėnesius, o pirmasis korekcinis Python 3.8.1 leidimas numatytas gruodžio mėnesį.

Tarp pridėtų naujoves:

  • Remti priskyrimo operacijos sudėtingose ​​išraiškose. Su naujuoju „:=“ operatoriumi galima atlikti reikšmių priskyrimo operacijas kitose išraiškose, pavyzdžiui, išvengti dvigubų funkcijų iškvietimų sąlyginiuose sakiniuose ir apibrėžiant ciklus:

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

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

  • Remti nauja sintaksė funkcijos argumentams nurodyti. Kai išvardijate argumentus funkcijos apibrėžimo metu, dabar galite nurodyti „/“, kad atskirtumėte argumentus, kuriems gali būti priskirtos tik reikšmės, atsižvelgiant į tai, kokia tvarka reikšmės išvardijamos funkcijos iškvietimo metu, nuo argumentų, kuriuos galima priskirti. bet kokia tvarka (kintamasis=vertės sintaksė) ). Kalbant apie praktinę pusę, naujoji funkcija leidžia Python funkcijoms visiškai imituoti esamų funkcijų elgesį C, taip pat išvengti susiejimo su konkrečiais pavadinimais, pavyzdžiui, jei ateityje planuojama pakeisti parametro pavadinimą.

    Žymė „/“ papildo anksčiau pridėtą žymą „*“, atskirdama kintamuosius, kuriems taikomas tik priskyrimas forma „kintamasis=vertė“. Pavyzdžiui, funkcijoje „def f(a, b, /, c, d, *, e, f):“ kintamieji „a“ ir „b“ gali būti priskirti tik tokia tvarka, kokia yra nurodytos reikšmės. ,
    kintamieji „e“ ir „f“, tik priskyrę „kintamasis=reikšmė“, ir kintamuosius „c“ ir „d“ bet kuriuo iš šių būdų:

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

  • Pridėta nauja C API
    konfigūruoti Python inicijavimo parametrus, leidžiančius visiškai valdyti viską konfigūracija ir suteikiant pažangias klaidų valdymo priemones. Siūloma API leidžia lengvai įterpti Python interpretatoriaus funkcijas į kitas C programas;

  • Įgyvendinta naujas Vectorcall protokolas, skirtas greitesnei prieigai prie objektų, parašytų C kalba. CPython 3.8 versijoje prieiga prie Vectorcall vis dar apsiriboja vidiniu naudojimu, o CPython 3.9 planuojama perkelti į viešai prieinamų API kategoriją;
  • Pridėta iškviečiami „Runtime Audit Hooks“, kurie suteikia Python programoms ir sistemoms prieigą prie žemo lygio informacijos apie scenarijaus eigą, kad patikrintų atliktus veiksmus (pavyzdžiui, galite sekti modulių importavimą, failų atidarymą, naudodami sekimą, prieiga prie tinklo lizdų, paleidžiamas kodas per exec, eval ir run_mod);
  • Modulyje marinuoti jeigu „Pickle 5“ protokolo palaikymas, naudojamas objektų serializavimui ir serializavimui. „Pickle“ leidžia optimizuoti didelių duomenų kiekių perdavimą tarp Python procesų kelių branduolių ir kelių mazgų konfigūracijose, sumažinant atminties kopijavimo operacijų skaičių ir taikant papildomus optimizavimo būdus, pavyzdžiui, naudojant specifinius duomenų glaudinimo algoritmus. Penktoji protokolo versija pasižymi tuo, kad yra pridėtas už juostos ribų perdavimo režimas, kai duomenys gali būti perduodami atskirai nuo pagrindinio marinato srauto.
  • Pagal numatytuosius nustatymus aktyvuota ketvirtoji „Pickle“ protokolo versija, kuri, palyginti su trečiąja, anksčiau pasiūlyta pagal nutylėjimą, leidžia užtikrinti didesnį našumą ir sumažinti perduodamų duomenų dydį;
  • Modulyje rašyti Pristatytos kelios naujos funkcijos:
    • Klasė ĮvestasDict asociatyviems masyvams, kuriuose tipo informacija yra aiškiai nurodyta su raktais susietiems duomenims („TypedDict('Point2D', x=int, y=int, label=str)“).
    • Tipas Žodinis, kuri leidžia apriboti parametrą arba grąžinti reikšmę iki kelių iš anksto nustatytų reikšmių („Literal“ [„prijungtas“, „atjungtas“]).
    • Statyba"Galutinis", kuri leidžia apibrėžti kintamųjų, funkcijų, metodų ir klasių reikšmes, kurių negalima pakeisti ar priskirti iš naujo ("pi: Final[float] = 3.1415926536").
  • Pridėta galimybė kompiliuotiems failams priskirti talpyklą su baitų kodu, išsaugota atskirame FS medyje ir atskirta nuo katalogų su kodu. Failų išsaugojimo su baito kodu kelias nustatomas per kintamąjį PITONPIKACHEPREFIKSAS arba parinktis "-X pycache_prefix";
  • Įgyvendinta galimybė kurti „Python“ derinimo versijas, kuriose naudojamas ABI, identiškas leidimui, leidžiantis įkelti SI kalba parašytus plėtinius, sukompiliuotus stabiliems leidimams, derinimo versijose;
  • f-stygos (suformatuoti literalai su priešdėliu „f“) palaiko operatorių = (pavyzdžiui, „f'{expr=}'“), kuris leidžia konvertuoti išraišką į tekstą, kad būtų lengviau derinti. Pavyzdžiui:

    ››› user = 'eric_idle'
    ››› narys_nuo = data(1975, 7, 31)
    ››› f'{user=} {member_nuo=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Išraiška "tęsti» leidžiama naudoti bloko viduje pagaliau;
  • Pridėtas naujas modulis multiprocessing.shared_memory, leidžiantis naudoti bendrinamos atminties segmentus kelių procesų konfigūracijas;
  • „Windows“ platformoje asyncio diegimas buvo perkeltas į klasę ProactorEventLoop;
  • LOAD_GLOBAL instrukcijos našumas buvo padidintas maždaug 40 % dėl naujo objekto kodo talpyklos mechanizmo naudojimo.

Šaltinis: opennet.ru

Добавить комментарий