A Python programozási nyelv 3.8-as kiadása

Másfél év fejlesztés után bemutatva jelentős kiadás a programozási nyelvben Python 3.8. A Python 3.8 ág frissítései tervezik 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 újdonságok:

  • Támogatás 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)) != '':
    …

  • Támogatás 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)

  • az „Alkalmazás” eszköz új C API
    a Python inicializálásához használt paraméterek beállításához, amely lehetővé teszi a teljes konfiguráció é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;
  • Megvalósítva lett ú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;
  • Hozzáadták 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 pickle biztosítva van 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 typing több új lehetőség került bemutatásra:
    • Osztály TypedDict 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 Literal, 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 „Final„ 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 PYTHONPYCACHEPREFIX változóval vagy a „-X pycache_prefix” opcióval lehet megadni;
  • a parancsok 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 „continue” kifejezés használata engedélyezett a finally;
  • blokkban. Új modul került hozzáadásra,multiprocessing.shared_memory,
  • amely lehetővé teszi a megosztott memória szegmensek használatát több szálas konfigurációkban; Windows platformon az asyncio implementációját átkonvertálták;
  • ProactorEventLoop

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster