Másfél év fejlesztés után jelentős kiadás a programozási nyelvben . A Python 3.8 ág frissítései 18 hónapon belül fognak megjelenni. A kritikus biztonsági rések javítása 2024. októberig 5 évig tart. A 3.8-as ág frissítései kéthavonta fognak érkezni, az első hibajavító kiadás, a Python 3.8.1 decemberre van tervezve.
A hozzáadott :
- kifjezések belső hozzárendelési műveletei. Az új ‘:=’ operátor segítségével lehetőség nyílik értékek hozzárendelésére más kifejezések belsejében, például a függvények dupla hívásának elkerülésére feltételes állításokban és ciklusok definiálásakor:
if (n := len(a)) > 10:
…while (block := f.read(256)) != '':
… - az új szintaxis a függvényargumentumok megadásához. A függvény definiálása során az argumentumok felsorolásakor meg lehet adni a ‘/’ jelzést, amely lehetővé teszi az olyan argumentumok elválasztását, amelyek csak a felsorolás sorrendje alapján kaphatnak értéket a hívás során, azoktól, amelyeket tetszőleges sorrendben lehet hozzárendelni (a ‘változó=érték’ szintaxis). Gyakorlatilag ez az új lehetőség lehetővé teszi a Python nyelvben lévő funkciók viselkedésének teljes emulálását, valamint elkerüli a konkrét nevekhez való kötődést, például ha a paraméter neve a jövőben megváltoztatásra kerül.
A ‘/’ jelzés kiegészíti a korábban bevezetett ‘*’ jelzést, amely elválasztja azokat a változókat, amelyekhez csak ‘változó=érték’ formájában lehet hozzárendelni. Például a ‘def f(a, b, /, c, d, *, e, f):’ függvényben az ‘a’ és ‘b’ változók csak a felsorolás szerinti értékek sorrendjében állíthatók be,
az ‘e’ és ‘f’ változók csak a ‘változó=érték’ formájában, míg a ‘c’ és ‘d’ változók bármilyen megadott módszerrel:f(10, 20, 30, 40, e=50, f=60)
f(10, 20, c=30, d=40, e=50, f=60) - új C API
a Python inicializálásához használt paraméterek beállításához, amely lehetővé teszi a teljes és fejlett hibakezelési eszközök biztosítását. A javasolt API egyszerűsíti a Python értelmező funkcióinak beágyazását más C alkalmazásokba; - új Vectorcall protokoll, amely gyorsabb hozzáférést biztosít a C nyelven írt objektumokhoz. A CPython 3.8-ban a Vectorcall használata egyelőre belső célokra van korlátozva, a nyilvános API-ra való átállás a CPython 3.9-re van tervezve;
- Runtime Audit Hooks hívások, amelyek hozzáférést biztosítanak a Python nyelvű alkalmazásoknak és keretrendszereknek az alacsony szintű szkriptek végrehajtásának nyomkövetéséhez, hogy ellenőrizni tudják a végrehajtott műveleteket (például nyomon követhetjük a modulok importálását, fájlok megnyitását, nyomkövetés használatát, hálózati socket-ek elérését, kód végrehajtását exec, eval és run_mod által);
- A modulban az 5-ös Pickle protokoll támogatása, amelyet objektumok sorosítására és deszorosítására használnak. A Pickle optimalizálja a nagy mennyiségű adat átvitelét a Python folyamatok között, több magos és több csomóponton történő konfigurációk esetén, csökkentve a memória másolási műveletek számát és alkalmazva további optimalizálási technikákat, például a bizonyos adatok számára specifikus tömörítési algoritmusok használatát. Az ötödik verzió megjegyzendő a külön átviteli mód (out-of-band) bevezetésével, amely lehetővé teszi az adatok külön átvitelét a fő pickle folyamtól.
- Alapértelmezés szerint a negyedik verzió aktív, amely a korábban alapértelmezett harmadik verzióhoz képest jobb teljesítményt és kisebb átvitt adatméreteket tesz lehetővé;
- A modulban több új lehetőség került bemutatásra:
- Osztály asszociatív tömbök esetén, ahol a kulcsokhoz kapcsolt adatok típusinformációját egyértelműen meg kell adni („TypedDict(‘Point2D’, x=int, y=int, label=str)”);
- Típus , amely lehetővé teszi a paraméter vagy a visszatérési érték korlátozását néhány előre meghatározott értékre („Literal[‘connected’, ‘disconnected’]”);
- A „„ szerkezet lehetővé teszi, hogy olyan változók, függvények, metódusok és osztályok értékeit határozzuk meg, amelyek nem módosíthatók vagy átdefiniálhatók („pi: Final[float] = 3.1415926536”);
- Lehetővé vált a bytecode fájlok előtárának megadása, amely külön fájlrendszerben tárolódik és elválik a kód mappáktól. A bytecode fájlok tárolásának útját a változóval vagy a „-X pycache_prefix” opcióval lehet megadni;
- lehetőség Python hibakereső összeállítások készítésére, amelyek azonos ABI-t használnak a kiadással, lehetővé téve a C nyelven írt kiterjesztések betöltését a stabil kiadásokhoz készült verziókkal;
- Az f-stringekben (formázott irodalmak, ‘f’ előtaggal) támogatást kapott az „=” operátor (például „f'{expr=}'”), amely lehetővé teszi az kifejezés szöveggé alakítását a hibakeresés megkönnyítése érdekében. Például:
››› user = 'eric_idle'
››› member_since = date(1975, 7, 31)
››› f'{user=} {member_since=}'
„user='eric_idle' member_since=datetime.date(1975, 7, 31)" - A „” kifejezés használata engedélyezett a ;
- blokkban. multiprocessing.shared_memory,
- amely lehetővé teszi a megosztott memória szegmensek használatát több szálas konfigurációkban; ;
- ProactorEventLoop
Forrás: opennet.ru
