Vydanie programovacieho jazyka Python 3.8

Po roku a pol vývoja predložené významné vydanie programovacieho jazyka Python 3.8Opravné aktualizácie pre vetvu Python 3.8 je plánované Vydávané počas 18 mesiacov. Kritické zraniteľnosti budú opravované päť rokov, končiac v októbri 2024. Opravné aktualizácie pre vetvu 3.8 budú vydávané každé dva mesiace, pričom prvé opravné vydanie Pythonu 3.8.1 je naplánované na december.

Medzi pridanými inovácie:

  • Podpora Priraďovacie operácie v rámci zložitých výrazov. Nový operátor ":=" umožňuje vykonávať priradenia hodnôt v rámci iných výrazov, napríklad aby sa predišlo dvojitému volaniu funkcií v podmienených príkazoch a pri definovaní cyklov:

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

    zatiaľ čo (blok := f.read(256)) != ":
    ...

  • Podpora Nová syntax na zadávanie argumentov funkcií. Pri uvádzaní argumentov počas definície funkcie môžete teraz použiť znak „/“. Tým sa rozlišujú argumenty, ktorých hodnoty je možné priradiť iba na základe poradia, v akom boli uvedené počas volania funkcie, od argumentov, ktoré je možné priradiť v ľubovoľnom poradí (syntax „premenná=hodnota“). V praxi táto nová funkcia umožňuje funkciám Pythonu plne emulovať správanie existujúcich funkcií C a zároveň sa vyhnúť ich viazaniu na konkrétne názvy, napríklad ak sa plánuje v budúcnosti zmeniť názov parametra.

    Príznak „/“ dopĺňa predtým pridaný príznak „*“, ktorý oddeľuje premenné, pre ktoré je možné použiť iba priradenie vo forme „premenná=hodnota“. Napríklad vo funkcii „def f(a, b, /, c, d, *, e, f):“ je možné premenné „a“ a „b“ priradiť iba v poradí, v akom sú uvedené ich hodnoty.
    premenné „e“ a „f“ iba priradením „premenná=hodnota“ a premenné „c“ a „d“ ktorýmkoľvek z nasledujúcich spôsobov:

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

  • Pridané nové API jazyka C
    nakonfigurovať inicializačné parametre Pythonu, čo vám umožní mať plnú kontrolu nad celým konfigurácia a poskytuje pokročilé možnosti spracovania chýb. Navrhované API zjednodušuje vkladanie funkcionality interpreta Pythonu do iných aplikácií v jazyku C;
  • Implementovaná Nový protokol Vectorcall pre rýchlejší prístup k objektom napísaným v jazyku C. V CPython 3.8 je prístup k Vectorcallu momentálne obmedzený na interné použitie; jeho prechod na verejne dostupné API je plánovaný pre CPython 3.9;
  • Pridané Runtime Audit Hooks, ktoré poskytujú aplikáciám a frameworkom Pythonu prístup k nízkoúrovňovým informáciám o vykonávaní skriptu na audit vykonaných akcií (napríklad môžete sledovať import modulov, otváranie súborov, používanie trasovania, prístupy k sieťovým socketom a vykonávanie kódu prostredníctvom exec, eval a run_mod);
  • V module rôsol zabezpečené Podpora protokolu Pickle 5, ktorý sa používa na serializáciu a deserializáciu objektov. Pickle optimalizuje prenos veľkého množstva dát medzi procesmi Pythonu vo viacjadrových a viacuzlových konfiguráciách znížením počtu operácií kopírovania pamäte a použitím ďalších optimalizačných techník, ako sú napríklad algoritmy kompresie špecifických dát. Verzia 5 protokolu je pozoruhodná pridaním režimu mimo pásma, ktorý umožňuje prenos dát oddelene od hlavného prúdu Pickle.
  • Štandardne je aktivovaná štvrtá verzia protokolu Pickle, ktorá v porovnaní s treťou verziou, ktorá bola predtým štandardne ponúkaná, umožňuje vyšší výkon a zníženie veľkosti prenášaných údajov;
  • V module zadaním Bolo zavedených niekoľko nových funkcií:
    • Trieda TypedDict pre asociatívne polia, kde dáta spojené s kľúčmi majú explicitné informácie o type („TypedDict('Point2D', x=int, y=int, label=str)“).
    • Typ doslovný, čo umožňuje obmedziť parameter alebo návratovú hodnotu na niekoľko preddefinovaných hodnôt („Literal['connected', 'disconnected']“).
    • Stavebníctvo "koniec", ktorá umožňuje definovať hodnoty premenných, funkcií, metód a tried, ktoré nie je možné zmeniť ani prepriradiť ("pi: Final[float] = 3.1415926536").
  • Pridaná možnosť zadať vyrovnávaciu pamäť pre skompilované súbory bajtkódu, uloženú v samostatnom strome súborového systému a oddelenú od adresárov s kódom. Cesta pre ukladanie súborov bajtkódu je určená pomocou premennej. PYTHONPYCACHEPRIFIX alebo možnosť „-X pycache_prefix“;
  • Implementovaná možnosť vytvárať ladiace zostavy Pythonu, ktoré používajú rovnaké ABI ako vydané vydania, čo umožňuje načítanie rozšírení jazyka C kompilovaných pre stabilné vydania do ladiacich zostáv;
  • f-reťazce (formátované literály s predponou 'f') teraz podporujú operátor "=" (napr. "f'{expr=}'"), ktorý umožňuje previesť výraz na text pre jednoduchšie ladenie. Napríklad:

    ››› používateľ = 'eric_idle'
    ››› člen_od = dátum(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    „používateľ='eric_idle' member_since=datetime.date(1975, 7, 31)“

  • Výraz „pokračovať"povolené použitie vo vnútri bloku" konečne;
  • Pridaný nový modul multiprocessing.shared_memory, čo umožňuje použitie zdieľaných pamäťových segmentov v konfiguráciách s viacerými procesmi;
  • Na platforme Windows bola implementácia asyncio presunutá na použitie triedy ProactorEventLoop;
  • Výkon inštrukcie LOAD_GLOBAL sa zvýšil približne o 40 % vďaka použitiu nového mechanizmu ukladania objektového kódu do vyrovnávacej pamäte.

Zdroj: opennet.ru

Pridať komentár