Python programmeerimiskeele 3.8 vÀljalase

PÀrast poolteist aastat arendust esitati oluline vÀljalase programmeerimiskeele Python 3.8. Python 3.8 jaoks on oodata parandusi planeeritud vÀlja antakse 18 kuu jooksul. Kriitilisi haavatavusi parandatakse kuni 5 aastat, oktoobrini 2024. Python 3.8 jaoks esitletakse parandusi iga kahe kuu tagant, esimene parandav vÀljalase Python 3.8.1 on planeeritud detsembriks.

Kasutusele on vÔetud uuendusi:

  • Tugi omadusi, mis vĂ”imaldavad kohandatud vÀÀrtuste mÀÀramist keerulisemate vĂ€ljendite sees. Uue operaatori „:=“ abil on nĂŒĂŒd vĂ”imalik mÀÀrata vÀÀrtusi ka muudes vĂ€ljendites, nĂ€iteks kahekordse funktsiooni kutsumise vĂ€ltimiseks tingimuslauseid ja tsĂŒklite mÀÀratlemisel:

    if (n := len(a)) > 10:
    


    while (block := f.read(256)) != »:
    


  • Tugi uue sĂŒntaksi kaudu funktsiooni argumendi mÀÀramiseks. Funktsiooni mÀÀratlemisel vĂ”imaldab argumentide loetlemisel nĂŒĂŒd mĂ€rk „/“ eristada argumendid, millele saab vÀÀrtuste mÀÀramise peale funktsiooni vĂ€ljakutsumise ajal, argumendi jĂ€rjekorra pĂ”hjal, ja argumendid, mille mÀÀramine on lubatud suvalises jĂ€rjekorras (sĂŒntaks „muutuja=vÀÀrtus“). Praktiliselt annab uus vĂ”imalus Pythonis funktsioonides tĂ€ielikult jĂ€rgi jĂ€rele teha olemasolevaid C funktsioone ning vĂ”imaldab tĂ”husalt vĂ€ltida seotust spetsiifiliste nimedega, nt juhul kui parameetri nime plaanitakse tulevikus muuta.

    MĂ€rk „/“ tĂ€iendab varem lisatud omadust „*“, mis eristab muutujaid, mida saab mÀÀrata ainult vormis „muutuja=vÀÀrtus“. NĂ€iteks funktsioonis „def f(a, b, /, c, d, *, e, f):“ vĂ”ivad muutujaid „a“ ja „b“ mÀÀrata ainult antud jĂ€rjekorras.
    muutujad „e“ ja „f“, ainult lĂ€bi „muutuja=vÀÀrtus“ mÀÀramise, ning muutujaid „c“ ja „d“ igas mainitud vormis:

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

  • Lisatud uus C API
    Pythoninihitusparameetrite seadistamiseks, mis vÔimaldab tÀielikku kontrolli kogu konfiguratsiooni ja pakub laienevaid vigade töötlemise vahendeid. Pakutav API lihtsustab Python interpreteerimist teiste C keeles kirjutatud rakenduste sisse;
  • Teostatud uus Vectorcall protokoll, et kiirendada juurdepÀÀsu C-keeles kirjutatud objektidele. CPython 3.8-s on Vectorcall juurdepÀÀs hetkel piiratud sisemiseks kasutamiseks, avalike API-deks muutmine on planeeritud CPython 3.9-le;
  • Lisatud Runtime Audit Hookide kĂ”ned, mis vĂ”imaldavad rakendustel ja raamistikudel Python keeles juurde pÀÀseda madala taseme teabele skripti tĂ€itmise kĂ€igus, et auditeerida sooritusi (nĂ€iteks on vĂ”imalik jĂ€lgida moodulite importimist, failide avamist, jĂ€lgimise kasutamist, vĂ”rgusokkide nĂ”udmisi, koodi kĂ€ivitamist lĂ€bi exec, eval ja run_mod);
  • Moodulis pickle on tagatud Pickle 5 protokolli tugi, mida kasutatakse objektide serialiseerimiseks ja deserialiseerimiseks. Pickle vĂ”imaldab optimeerida suurte andmehulkade edastamist Python protsesside vahel mitme tuuma ja klastrite konfiguratsioonides, vĂ€hendades mĂ€lu kopeerimise operatsioonide arvu ning rakendades tĂ€iendavaid optimeerimistehnikaid, nagu spetsiifiliste andmete jaoks mĂ”eldud pakkimismeetodite kasutamine. Protokolli viies versioon on mĂ€rkimisvÀÀrne eraldatud edastamise (out-of-band) reĆŸiimi lisamisega, kus andmeid saab edastada eraldi peamisest pickle voost.
  • Vaikimisi on aktiveeritud Pickle neljas versioon, mis vĂ”rreldes eelnevalt vaikimisi pakutud kolmanda versiooniga vĂ”imaldab saavutada paremat jĂ”udlust ja vĂ€hendada edastatavate andmete mahtu;
  • Moodulis typing on esitatud mitmeid uusi vĂ”imalusi:
    • Klass TypedDict assotsiatiivsete massiivide jaoks, kus klahvidega seostatavate andmete jaoks mÀÀratakse selgelt tĂŒĂŒpide teave ("TypedDict('Point2D', x=int, y=int, label=str)").
    • TĂŒĂŒp Literal, mis vĂ”imaldab piirata parameetrit vĂ”i tagastatavat vÀÀrtust mitu eelnevalt mÀÀratud vÀÀrtusega ("Literal['connected', 'disconnected']").
    • Konstruktsioon "Final", mis vĂ”imaldab mÀÀrata muutujate, funktsioonide, meetodite ja klasside vÀÀrtused, mida ei saa muuta vĂ”i ĂŒmber mÀÀrata ("pi: Final[float] = 3.1415926536").
  • Lisatud vĂ”imalus mÀÀrata vahemĂ€lu kompileeritud Bytecode failide jaoks, mis salvestatakse eraldi FS puusse ja eraldatakse koodide kataloogidest. Bytecode failide salvestamise tee mÀÀratakse muutuja PYTHONPYCACHEPREFIX vĂ”i valiku "-X pycache_prefix" kaudu;
  • TC39 pĂ€rand RegExp funktsioonid JavaScriptis Python debug build looming vĂ”imaldab luua, kasutades sama ABI kui tootmisversioon, mis vĂ”imaldab laadida C keeles kirjutatud laiendusi, mis on kompileeritud stabiilsete vĂ€ljaannete jaoks;
  • F-string'ides (formaatimisliteraatide eesliitega 'f') on toetatud operaator «=» (nĂ€iteks «f'{expr=}'»), mis vĂ”imaldab vĂ€ljendi teksti vormindamist, et hĂ”lbustada tĂ”rkeotsingut. NĂ€iteks:

    â€șâ€șâ€ș kasutaja = 'eric_idle'
    â€șâ€șâ€ș liige_alates = date(1975, 7, 31)
    â€șâ€șâ€ș f'{kasutaja=} {liige_alates=}'
    «kasutaja='eric_idle' liige_alates=datetime.date(1975, 7, 31)»

  • VĂ€ljend «continue» on lubatud kasutada ploki sees finally;
  • Lisatud uus moodul multiprocessing.shared_memory, mis vĂ”imaldab kasutada jagatud mĂ€lu segmente mitme protsessiga konfigureerimistes;
  • Windowsi platvormil on asyncio rakendamine muudetud kasutama klassi ProactorEventLoop;
  • LOAD_GLOBAL kĂ€su jĂ”udlus on suurenenud umbes 40% uue objektikoodi vahemĂ€lu mehhanismi kasutuselevĂ”tu tĂ”ttu.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster