Vydání programovacího jazyka Python 3.8

Po roce a půl vývoje prezentovány vydání hlavního programovacího jazyka Python 3.8. Opravné aktualizace pro větev Pythonu 3.8 je plánováno vydání do 18 měsíců. Kritické chyby zabezpečení budou opraveny po dobu 5 let do října 2024. Opravné aktualizace pro větev 3.8 budou vydávány každé dva měsíce, přičemž první opravné vydání Pythonu 3.8.1 je naplánováno na prosinec.

Mezi přidané inovace:

  • Podpora přiřazovací operace v rámci složitých výrazů. S novým operátorem „:=“ je možné provádět operace přiřazování hodnot uvnitř jiných výrazů, například aby se zabránilo dvojitému volání funkcí v podmíněných příkazech a při definování smyček:

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

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

  • Podpora nová syntaxe pro specifikaci argumentů funkcí. Při výčtu argumentů během definice funkce můžete nyní zadat „/“ pro oddělení argumentů, kterým lze přiřadit hodnoty pouze na základě pořadí, ve kterém jsou hodnoty vyčísleny během volání funkce, od argumentů, které lze přiřadit. v libovolném pořadí (syntaxe proměnné=hodnota) ). Z praktického hlediska nová funkce umožňuje funkcím v Pythonu zcela emulovat chování existujících funkcí v C a také se vyhnout vazbě na konkrétní názvy, například pokud se v budoucnu plánuje změna názvu parametru.

    Příznak „/“ doplňuje dříve přidaný příznak „*“, odděluje proměnné, pro které platí pouze přiřazení ve tvaru „proměnná=hodnota“. Například ve funkci "def f(a, b, /, c, d, *, e, f):" lze proměnné "a" a "b" přiřadit pouze v pořadí, v jakém jsou uvedeny hodnoty ,
    proměnné „e“ a „f“, pouze prostřednictvím přiřazení „proměnná=hodnota“ a proměnné „c“ a „d“ kterýmkoli z následujících způsobů:

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

  • Přidat nové C API
    pro konfiguraci inicializačních parametrů Pythonu, což umožňuje úplnou kontrolu nad všemi konfigurace a poskytování pokročilých zařízení pro řešení chyb. Navrhované API usnadňuje vložení funkčnosti interpretu Pythonu do jiných aplikací C;

  • Realizováno nový protokol Vectorcall pro rychlejší přístup k objektům napsaným v jazyce C. V CPythonu 3.8 je přístup k Vectorcall stále omezen na interní použití, přechod do kategorie veřejně přístupných API je plánován v CPythonu 3.9;
  • Přidal volání Runtime Audit Hooks, které poskytují aplikacím a frameworkům v Pythonu přístup k nízkoúrovňovým informacím o průběhu skriptu pro audit prováděných akcí (můžete například sledovat import modulů, otevírání souborů, pomocí trasování, přístup k síťovým soketům, spouštění kódu přes exec, eval a run_mod);
  • V modulu pickle zajištěno podpora protokolu Pickle 5, který se používá pro serializaci a deserializaci objektů. Pickle umožňuje optimalizovat přenos velkého množství dat mezi procesy Pythonu ve vícejádrových a víceuzlových konfiguracích snížením počtu operací kopírování paměti a použitím dalších optimalizačních technik, jako je použití kompresních algoritmů specifických pro data. Pátá verze protokolu je pozoruhodná přidáním mimopásmového přenosového režimu, ve kterém mohou být data přenášena odděleně od hlavního pickle proudu.
  • Standardně je aktivována čtvrtá verze protokolu Pickle, která oproti dříve standardně nabízené třetí verzi umožňuje vyšší výkon a snížení velikosti přenášených dat;
  • V modulu zadáním Je zavedeno několik nových funkcí:
    • Třída TypedDict pro asociativní pole, ve kterých jsou informace o typu explicitně specifikovány pro data spojená s klíči („TypedDict('Point2D', x=int, y=int, label=str)”).
    • Typ Doslovný, který umožňuje omezit parametr nebo návratovou hodnotu na několik předdefinovaných hodnot („Literal['connected', 'disconnected']“).
    • Stavba"Poslední", což umožňuje definovat hodnoty proměnných, funkcí, metod a tříd, které nelze změnit ani znovu přiřadit ("pi: Final[float] = 3.1415926536").
  • Přidána možnost přiřadit mezipaměť kompilovaným souborům s bajtkódem, uložená v samostatném stromu FS a oddělená od adresářů s kódem. Cesta pro ukládání souborů s bajtkódem se nastavuje pomocí proměnné PYTHONPYCACHEPREFIX nebo volba "-X pycache_prefix";
  • Realizováno schopnost vytvářet ladicí sestavení Pythonu, která používají ABI identické s vydáním, což vám umožňuje načítat rozšíření napsaná v jazyce SI, zkompilovaná pro stabilní vydání, v ladicích sestaveních;
  • f-strings (formátované literály s předponou 'f') poskytují podporu pro operátor = (například "f'{expr=}'"), který vám umožňuje převést výraz na text pro snazší ladění. Například:

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

  • Výraz "pokračovat» povoleno pro použití uvnitř bloku Konečně;
  • Přidán nový modul multiprocessing.shared_memoryumožňující použití segmentů sdílené paměti ve víceprocesových konfiguracích;
  • Na platformě Windows byla implementace asyncio přesunuta k použití třídy ProactorEventLoop;
  • Výkon instrukce LOAD_GLOBAL byl zvýšen přibližně o 40 % díky použití nového mechanismu mezipaměti objektového kódu.

Zdroj: opennet.ru

Přidat komentář