Vydanie programovacieho jazyka Python 3.8

Po roku a pol vývoja predložené hlavné vydanie programovacieho jazyka Python 3.8. Opravné aktualizácie pre vetvu Python 3.8 je plánované uvoľnenie do 18 mesiacov. Kritické chyby zabezpečenia budú opravené na 5 rokov do októbra 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. S novým operátorom „:=“ je možné vykonávať operácie priraďovania hodnôt v rámci iných výrazov, napríklad aby sa zabránilo dvojitým volaniam funkcií v podmienených príkazoch a pri definovaní slučiek:

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

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

  • Podpora nová syntax na špecifikovanie argumentov funkcií. Pri enumerácii argumentov počas definície funkcie môžete teraz zadať „/“ na oddelenie argumentov, ktorým možno priradiť hodnoty iba na základe poradia, v ktorom sú hodnoty vymenované počas volania funkcie, od argumentov, ktoré možno priradiť. v ľubovoľnom poradí (syntax "premenná=hodnota"). Z praktického hľadiska nová funkcia umožňuje funkciám v Pythone úplne emulovať správanie existujúcich funkcií v C a tiež sa vyhnúť viazaniu na konkrétne názvy, napríklad ak sa v budúcnosti plánuje zmena názvu parametra.

    Príznak „/“ dopĺňa predtým pridaný príznak „*“, pričom oddeľuje premenné, pre ktoré je použiteľné len priradenie v tvare „premenná=hodnota“. Napríklad vo funkcii "def f(a, b, /, c, d, *, e, f):" možno premenné "a" a "b" priradiť len v poradí, v akom sú uvedené hodnoty ,
    premenné „e“ a „f“ len prostredníctvom priradenia „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é C API
    na konfiguráciu inicializačných parametrov Pythonu, čo umožňuje úplnú kontrolu nad všetkými konfigurácia a poskytovanie pokročilých zariadení na riešenie chýb. Navrhované API uľahčuje vloženie funkčnosti tlmočníka Pythonu do iných aplikácií C;

  • Implementovaná nový protokol Vectorcall pre rýchlejší prístup k objektom napísaným v jazyku C. V CPythone 3.8 je prístup k Vectorcall stále obmedzený na interné použitie, prechod do kategórie verejne prístupných API je plánovaný v CPythone 3.9;
  • Pridané volania modulu Runtime Audit Hooks, ktoré poskytujú aplikáciám a rámcom v Pythone prístup k informáciám na nízkej úrovni o priebehu skriptu na audit vykonaných akcií (napríklad môžete sledovať import modulov, otváranie súborov, pomocou sledovania, prístup k sieťovým zásuvkám, spúšťanie kódu cez 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 vám umožňuje optimalizovať prenos veľkého množstva údajov 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 dodatočných optimalizačných techník, ako je použitie kompresných algoritmov špecifických pre údaje. Piata verzia protokolu je pozoruhodná pridaním mimopásmového prenosového režimu, v ktorom môžu byť dáta prenášané oddelene od hlavného prúdu pickle.
  • Štandardne je aktivovaná štvrtá verzia protokolu Pickle, ktorá v porovnaní s predtým štandardne ponúkanou treťou verziou umožňuje vyšší výkon a zníženie veľkosti prenášaných dát;
  • V module zadaním Zavádza sa niekoľko nových funkcií:
    • Trieda TypedDict pre asociatívne polia, v ktorých sú informácie o type explicitne špecifikované pre údaje spojené s kľúčmi („TypedDict('Point2D', x=int, y=int, label=str)”).
    • Typ doslovný, ktorý vám umožňuje obmedziť parameter alebo vrátiť hodnotu na niekoľko preddefinovaných hodnôt („Literal['connected', 'disconnected']“).
    • dizajn"koniec", čo umožňuje definovať hodnoty premenných, funkcií, metód a tried, ktoré nie je možné zmeniť ani priradiť ("pi: Final[float] = 3.1415926536").
  • Pridaná možnosť priradiť vyrovnávaciu pamäť pre kompilované súbory pomocou bajtkódu, uložené v samostatnom strome FS a oddelené od adresárov s kódom. Cesta pre ukladanie súborov s bajtkódom sa nastavuje cez premennú PYTHONPYCACHEPREFIX alebo možnosť "-X pycache_prefix";
  • Implementovaná schopnosť vytvárať ladiace zostavy Pythonu, ktoré používajú ABI identické s vydaním, čo vám umožňuje načítať rozšírenia napísané v jazyku SI, skompilované pre stabilné vydania, v ladiacich zostavách;
  • f-reťazce (formátované literály s predponou 'f') poskytujú podporu pre operátor = (napríklad "f'{expr=}'"), ktorý vám umožňuje previesť výraz na text pre jednoduchšie ladenie. Napríklad:

    ››› user = 'eric_idle'
    ››› member_since = dátum(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • výraz "pokračovať» povolené na použitie vo vnútri bloku konečne;
  • Pridaný nový modul multiprocessing.shared_memoryumožňujúci používanie segmentov zdieľanej pamäte vo viacprocesových konfiguráciách;
  • 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 cachovania objektového kódu.

Zdroj: opennet.ru

Pridať komentár