Másfél év fejlesztés után bemutatott fő programozási nyelv kiadása Python 3.8. Javító frissítések a Python 3.8 ághoz a tervek szerint 18 hónapon belül szabadul fel. A kritikus sérülékenységeket 5 évre, 2024 októberéig javítják. A 3.8-as ág korrekciós frissítései kéthavonta jelennek meg, a Python 3.8.1 első javító kiadása decemberre várható.
támogatás hozzárendelési műveletek összetett kifejezéseken belül. Az új „:=” operátorral lehetőség nyílik más kifejezéseken belüli érték-hozzárendelési műveletek végrehajtására, például a kettős függvényhívások elkerülésére feltételes utasításokban és ciklusok definiálásakor:
ha (n := len(a)) > 10:
...
while (blokk := f.read(256)) != ":
...
támogatás új szintaxis függvényargumentumok megadásához. Amikor argumentumokat sorol fel a függvénydefiníció során, most megadhat egy "/" jelet, hogy elválaszthatja azokat az argumentumokat, amelyekhez csak a függvényhívás során értékadási sorrend rendelhető hozzá, a hozzárendelhető argumentumoktól. tetszőleges sorrendben (változó=érték szintaxis) ). Gyakorlati szempontból az új funkció lehetővé teszi, hogy a Python függvényei teljes mértékben emulálják a meglévő C-beli függvények viselkedését, és elkerüljék az egyes nevekhez való kötődést, például ha a paraméter nevét a jövőben módosítani kívánják.
A „/” jelző kiegészíti a korábban hozzáadott „*” jelzőt, elválasztva azokat a változókat, amelyekhez csak „változó=érték” formátumú hozzárendelés alkalmazható. Például a "def f(a, b, /, c, d, *, e, f):" függvényben az "a" és "b" változókat csak az értékek felsorolásának sorrendjében lehet hozzárendelni. ,
az „e” és „f” változókat, csak a „változó=érték” hozzárendeléssel, valamint a „c” és „d” változókat a következő módok bármelyikével:
Hozzáadva új C API
a Python inicializálási paramétereinek konfigurálásához, lehetővé téve az összes teljes ellenőrzését konfigurációt és fejlett hibakezelési lehetőségeket biztosít. A javasolt API megkönnyíti a Python interpreter funkcióinak más C-alkalmazásokba való beágyazását;
Megvalósítva új Vectorcall protokoll a C nyelven írt objektumok gyorsabb eléréséhez. A CPython 3.8-ban a Vectorcall-hoz való hozzáférés továbbra is belső használatra korlátozódik, a CPython 3.9-ben pedig a nyilvánosan elérhető API-k kategóriájába való áthelyezést tervezik;
Hozzáadva hívások a Runtime Audit Hookshoz, amelyek a Python alkalmazásainak és keretrendszereinek alacsony szintű hozzáférést biztosítanak a szkript előrehaladásával kapcsolatos információkhoz az elvégzett műveletek ellenőrzéséhez (például nyomon követheti a modulok importálását, a fájlok megnyitását, egy nyomkövetés segítségével, hálózati aljzatok elérése, kód futtatása az exec, eval és run_mod segítségével);
A modulban pácbiztosított támogatja a Pickle 5 protokollt, amelyet az objektumok sorosítására és deszerializálására használnak. A Pickle lehetővé teszi nagy mennyiségű adat átvitelének optimalizálását a Python-folyamatok között többmagos és több csomópontos konfigurációkban a memóriamásolási műveletek számának csökkentésével és további optimalizálási technikák alkalmazásával, például adatspecifikus tömörítési algoritmusok használatával. A protokoll ötödik verziója egy sávon kívüli átviteli mód hozzáadásával nevezhető, amelyben az adatok a fő savanyúság-folyamtól elkülönítve továbbíthatók.
Alapértelmezés szerint a Pickle protokoll negyedik verziója aktiválva van, amely a korábban alapértelmezés szerint kínált harmadik verzióhoz képest nagyobb teljesítményt és a továbbított adatok méretének csökkentését teszi lehetővé;
A modulban gépelés Számos új funkció került bevezetésre:
Osztály TypedDict asszociatív tömbökhöz, amelyekben a típusinformáció kifejezetten meg van adva a kulcsokhoz társított adatokhoz („TypedDict('Point2D', x=int, y=int, label=str)”).
Type Szó szerinti, amely lehetővé teszi egy paraméter vagy visszatérési érték korlátozását néhány előre meghatározott értékre („Literal['connected', 'disconnected']”).
Építkezés "vég", amely lehetővé teszi olyan változók, függvények, metódusok és osztályok értékeinek meghatározását, amelyek nem módosíthatók vagy nem rendelhetők újra ("pi: Final[float] = 3.1415926536").
Hozzáadtuk a gyorsítótár hozzárendelését a bájtkóddal lefordított fájlokhoz, amelyeket külön FS fába mentünk, és elválasztjuk a kódot tartalmazó könyvtáraktól. A fájlok bájtkóddal történő mentésének elérési útja egy változón keresztül van beállítva PYTHONPYCACHEPREFIX vagy a "-X pycache_prefix" opciót;
Megvalósítva lehetőség olyan Python hibakereső buildek létrehozására, amelyek a kiadással azonos ABI-t használnak, ami lehetővé teszi az SI nyelven írt, stabil kiadásokhoz összeállított bővítmények betöltését hibakeresési buildekben;
Az f-stringek (formázott literálok „f” előtaggal) támogatják az = operátort (például „f'{expr=}'”), amely lehetővé teszi a kifejezések szöveggé alakítását a könnyebb hibakeresés érdekében. Például: