Programmeerimiskeele Python 3.8 vÀljaanne

PÀrast poolteist aastat arendust esitatud oluline programmeerimiskeele vÀljaanne Python 3.8. Parandusuuendused Python 3.8. haru jaoks toetada ilmuvad 18 kuu jooksul. Kriitilised haavatavused parandatakse 5 aasta jooksul kuni oktoobri 2024. Parandusuuendused haru 3.8. jaoks ilmuvad iga kahe kuu tagant, detsembriks on planeeritud esimene parandusvÀljaanne Python 3.8.1.

Uute funktsioonide hulgas uudised:

  • Toetamine omistamisoperatsioonid keerukates vĂ€ljendites. Uue operaatori «:=» abil on nĂŒĂŒd vĂ”imalik teostada vÀÀrtuste omistamisoperatsioone teiste vĂ€ljendite sees, nĂ€iteks vĂ€ltimaks funktsioonide kahekordset kutsumist tingimuslausetes ja tsĂŒklite mÀÀramisel:

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


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


  • Toetamine uue funktsiooni argumendi sĂŒntaksisse. Funktsiooni mÀÀratlemisel argumendid loetledes on nĂŒĂŒd vĂ”imalik kasutada mĂ€rki „/”, mis vĂ”imaldab eraldada argumendid, millele saab vÀÀrtusi mÀÀrata ainult nende loendamise jĂ€rjekorras funktsiooni kutsumise kĂ€igus, nendest argumentidest, millele saab vÀÀrtuseid mÀÀrata ka suvalises jĂ€rjekorras (sĂŒntaks „muutuja=vÀÀrtus”). Praktikas vĂ”imaldab uus vĂ”imalus Pythonis funktsioonides tĂ€ielikult simuleerida C keeles olemasolevate funktsioonide kĂ€itumist ning vĂ€ltida konkreetsite nimede sidumist, nĂ€iteks juhul, kui parameetri nimi on tulevikus plaanis muuta.

    MĂ€rk „/” tĂ€iendab varem lisatud tĂ€hist „*”, mis eraldab muutujad, millele saab vÀÀrtusi mÀÀrata ainult vormis „muutuja=vÀÀrtus”. NĂ€iteks funktsioonis „def f(a, b, /, c, d, *, e, f):” saavad muutujad „a” ja „b” vÀÀrtusi mÀÀrata ainult loendamise jĂ€rjekorras.
    muutujad „e” ja „f” ainult vÀÀrtuste mÀÀramisel „muutuja=vÀÀrtus”, ning muutujad „c” ja „d” mĂ”lemal ĂŒhel nimetatud viisil:

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

  • Lisatud uus C API
    Python'i algsetamise parameetrite seadistamiseks, mis vÔimaldab tÀielikku kontrolli kÔigi konfiguratsiooni ja pakub tÀiustatud veahaldusvahendeid. Ettepanek API lihtsustab Python'i tÔlgendi funktsionaalsuse lÔimimist teistesse C-keeles kirjutatud rakendustesse;
  • Tehtud uus protokoll Vectorcall objektide kiirema kĂ€sitlemise jaoks, mis on kirjutatud C-keeles. CPython 3.8-s on Vectorcall'i juurdepÀÀs praegu piiratud sisemiseks kasutuseks, avalike API-deks muundamine on planeeritud CPython 3.9-s;
  • Lisatud Runtime Audit Hooks'i kutsed, mis annavad Python'i rakendustele ja raamistikule juurdepÀÀsu madalama taseme teabele skripti kĂ€itamise kĂ€igust, et teostada auditeeritud tegevusi (nt saab jĂ€lgida moodulite importimist, failide avamist, jĂ€lgimist, vĂ”rgu sokettide kasutamist, koodi kĂ€ivitamist lĂ€bi exec, eval ja run_mod);
  • moodulis pickle tagatud Pickle 5 protokolli tugi, mida kasutatakse objektide serialiseerimiseks ja deserialiseerimiseks. Pickle vĂ”imaldab optimeerida suurte andmehulkade edastamist Python'i protsesside vahel mitme sĂŒdamiku ja mitme sĂ”lme konfigureerimisel, vĂ€hendades mĂ€lukopeerimise operatsioonide arvu ja kohaldades tĂ€iendavaid optimeerimistehnikaid, nagu andmetele spetsiifiliste kompressioonialgoritmide kasutamine. Protokolli viiendat versiooni iseloomustab eraldi edastamise (out-of-band) reĆŸiimi lisamine, kus andmeid saab edastada eraldi pĂ”hivoolust pickle.
  • Vaikimisi on aktiveeritud Pickle neljas versioon, mis vĂ”rreldes varasema default-nasuna pakutud kolmanda versiooniga vĂ”imaldab saavutada paremat jĂ”udlust ja edastatavate andmete suuruse vĂ€henemist.
  • moodulis typing on esitatud mitu uut vĂ”imalust:
    • Klass TypedDict assotsiatiivsete massiivide jaoks, kus seostatavale vĂ”tmega andmetele on selgelt mÀÀratud tĂŒĂŒbi teave ("TypedDict('Point2D', x=int, y=int, label=str)").
    • TĂŒĂŒp Literal, vĂ”imaldades piirata parameetrit vĂ”i tagastusvÀÀrtust mitme ettemÀÀratud vÀÀrtusega («Literal[‘connected’, ‘disconnected’]»).
    • Struktuur «Final«, mis vĂ”imaldab mÀÀrata muutujate, funktsioonide, meetodite ja klasside vÀÀrtusi, mida ei saa muuta ega uuesti mÀÀrata («pi: Final[float] = 3.1415926536»).
  • Lisatud on vĂ”imalus mÀÀrata vahemĂ€lu kompileeritud failide jaoks koos.Bytecode, mis salvestatakse eraldi FS-puusse ja on eraldatud koodikataloogidest. Bytecode'i salvestamise tee mÀÀratakse muutuja kaudu PYTHONPYCACHEPREFIX vĂ”i valiku «-X pycache_prefix»;
  • On rakendatud vĂ”imalus luua Python'i silumisversioone, mis kasutavad sama ABI-d kui vĂ€ljaanne, mis vĂ”imaldab silumisversioonides laadida C keeles kirjutatud laiendusi, mis on kogutud stabiilsete vĂ€ljaannete jaoks;
  • F-stringides (vormingliteralid prefiksiga ‘f’) tagatakse operaatori «=» tugi (nt «f'{expr=}'»), mis vĂ”imaldab muuta vĂ€ljendi tekstiks, et hĂ”lbustada silumist. NĂ€iteks:

    â€șâ€șâ€ș user = ‘eric_idle’
    â€șâ€șâ€ș member_since = date(1975, 7, 31)
    â€șâ€șâ€ș f'{user=} {member_since=}'
    «user=’eric_idle’ member_since=datetime.date(1975, 7, 31)»

  • VĂ€ljend «continue» on lubatud kasutada sees Đ±Đ»ĐŸĐș finally;
  • Uus moodul lisatud multiprocessing.shared_memory, mis vĂ”imaldab kasutada jagatud mĂ€lu segmente mitme protsessi konfiguratsioonides;
  • Windows platvormil on asyncio rakendus muudetud kasutama klassi ProactorEventLoop;
  • LOAD_GLOBAL kĂ€su efektiivsus on tĂ”usnud umbes 40% tĂ€nu uue objektikoodi vahemĂ€lu mehhanismi kasutusele.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster