Python je interpretovaný programovací jazyk na vysokej úrovni, ktorého filozofia kladie dôraz na čitateľnosť jeho kódu.
Po roku vývoja bola zverejnená nová verzia programovacieho jazyka Python 3.11, bude nová vetva podporovaná rok a pol, potom sa budú ďalšie tri a pol roka vytvárať záplaty so zraniteľnosťami.
Zároveň sa začalo alfa testovanie vetvy Python 3.12 (podľa nového harmonogramu vývoja sa práca na novej vetve začína päť mesiacov pred vydaním predchádzajúcej vetvy a dosiahne alfa testovanie v čase ďalšej verzie).
Vetva Pythonu 3.12 bude vo verziách alfa sedem mesiacov, počas ktorých budú pridané nové funkcie a opravené chyby. Potom bude prebiehať beta testovanie počas troch mesiacov, počas ktorých bude zakázané pridávanie nových funkcií a plná pozornosť sa bude venovať opravám chýb. Posledné dva mesiace pred spustením bude pobočka vo fáze kandidáta na spustenie, kedy prebehne konečná stabilizácia.
Hlavné nové funkcie Pythonu 3.11
V tejto novej verzii Na optimalizácii výkonu sa vykonala značná práca, keďže nová pobočka zahŕňa súvisiace zmeny so zrýchlením a inline nasadením volaní funkcií, využitie rýchlych interpretov typických operácií, ako aj optimalizácie pripravené projektmi Cinder a HotPy. V závislosti od typu zaťaženia sa rýchlosť vykonávania kódu zvyšuje medzi 10 % a 60 %. V priemere sa výkon pri absolvovaní testovacej súpravy pyperformance zvýšil o 25 %.
Mechanizmus ukladania do vyrovnávacej pamäte bol prepracovaný bajtkódu, čo skrátilo čas spustenia tlmočníka o 10-15%. Objekty s kódom a bajtkódom sú teraz staticky alokované tlmočníkom, čo umožnilo eliminovať kroky rozlúštenia bajtkódu získaného z vyrovnávacej pamäte a konverzie objektov s kódom na ich umiestnenie do haldy pamäte.
Pridané podpora pre výnimočné skupiny, čo dáva programu možnosť vyvolať a spracovať niekoľko rôznych výnimiek súčasne. Nové typy výnimiek ExceptionGroup a BaseExceptionGroup sú navrhnuté na zoskupenie viacerých výnimiek dohromady a výraz "okrem* "je pridaný k samostatným výnimkám zo skupiny.
Pridaný špeciálny typ LiteralString tak sám môže obsahovať doslovné reťazce, ktoré sú kompatibilné s typom LiteralString (teda holé reťazce a reťazce typu LiteralString, ale nie ľubovoľné alebo zmiešané reťazce typu str). Typ LiteralString je možné použiť na obmedzenie odovzdávania reťazcových argumentov do funkcií, ľubovoľné nahrádzanie častí reťazcov, kde to môže viesť k zraniteľnostiam, napríklad pri generovaní reťazcov pre SQL dotazy alebo príkazy shellu.
Okrem toho tiež možnosť označiť jednotlivé prvky slovníkov je poskytovaná (TypedDict) s príznakmi Required a Not Required na určenie povinných a voliteľných polí (v predvolenom nastavení sú všetky deklarované polia povinné, ak celkový parameter nie je nastavený na falošný).
Pridaný dekorátor triedy, metódy a funkcie @dataclass_transform, keď je zadaný, kontrola statického typu zaobchádza s objektom, ako keby používal dekorátor @dataclasses.dataclass.
Z ďalších zmien, ktoré vynikajú v tejto novej verzii:
- Pridaná možnosť používať atómové zoskupovanie ((?>…)) a žiarlivé (vlastnícke) kvantifikátory (*+, ++, ?+, {m,n}+) v regulárnych výrazoch.
- Pribudol typ TypeVarTuple, ktorý umožňuje použitie variabilných generík, na rozdiel od TypeVar, ktorý pokrýva nie jeden typ, ale ľubovoľný počet typov.
- Štandardná knižnica obsahuje modul tomllib s funkciami na analýzu formátu TOML.
- Do triedy BaseException bola pridaná metóda add_note(), ktorá umožňuje pripojiť k výnimke textovú poznámku, napríklad na pridanie kontextových informácií, ktoré neboli dostupné v čase vyvolania výnimky.
- Bol pridaný špeciálny typ Self, ktorý predstavuje aktuálnu súkromnú triedu. Self možno použiť na anotovanie metód, ktoré vrátia inštanciu vašej triedy jednoduchším spôsobom ako pomocou TypeVar.
- Pridaná možnosť príkazového riadka "-P" a premenná prostredia PYTHONSAFEPATH na zakázanie automatického pripájania potenciálne nebezpečných ciest k súborom k sys.path.
- Pomôcka py.exe pre platformu Windows bola výrazne vylepšená, aby podporovala syntax "-V:". / " Okrem tohoto "- . ».
- Mnohé makrá C API boli prevedené na bežné alebo statické inline funkcie
- Moduly uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev a sunau boli zastarané a budú odstránené z Pythonu. vydanie 3.13.
- Odstránené funkcie PyUnicode_Encode*.
- Trieda TaskGroup bola pridaná do modulu asyncio s implementáciou asynchrónneho kontextového manažéra, ktorý čaká na dokončenie skupiny úloh.
- Pridávanie úloh do skupiny sa vykonáva pomocou metódy create_task().
Konečne ak máte záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.