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 ágon kiadott javítófrissítések tervezik 18 hónapon belül fognak megjelenni. A kritikus sebezhetőségeket 2024 októberéig 5 éven keresztül javítják. A 3.8 ágon kiadott javítófrissítések kéthavonta fognak megjelenni, az első javítókiadás, a Python 3.8.1 decemberre van tervezve.

A hozzáadott újdonságok:

  • Támogatás hozzárendelési műveletek bonyolult kifejezésekben. Az új „:=” operátor segítségével lehetőség nyílik az értékek hozzárendelésére más kifejezéseken belül, például a funkciók kétszeri hívásának elkerülésére feltételes operátorokban és ciklusok definiálásakor:

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

    while (block := f.read(256)) != »:
    …

  • Támogatás az új szintaxis a funkcióargumentumok megadásához. A funkció definálásakor most meg lehet adni a „/” zászlót, amely lehetővé teszi a rendelésük alapján csak sorrendben hozzárendelhető argumentumok szétválasztását a szabadon hozzárendelhetők (szintaxis „változó=érték”) között. Gyakorlati szempontból az új lehetőség lehetővé teszi, hogy a Python nyelvű funkciók teljes mértékben emulálják a C nyelv funkcióinak viselkedését, valamint elkerüljék a konkrét nevekre való utalást, például ha a paraméter neve a jövőben megváltoztatásra kerül.

    A „/” zászló kiegészíti a korábban hozzáadott „*” jelzést, amely azokat a változókat választja el, amelyeknél csak a „változó=érték” formájú hozzárendelés alkalmazható. Például a „def f(a, b, /, c, d, *, e, f):” funkcióban az „a” és „b” változók csak az értékek sorrendjében állíthatók be.
    az „e” és „f” változók, csak a „változó=érték” hozzárendelésen keresztül, míg a „c” és „d” változók bármelyik megadott módszeren keresztül:

    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 paramétereinek beállításához, amely teljes körű ellenőrzést tesz lehetővé a konfigurációról és kiterjedt hibakezelési eszközöket biztosít. Az API leegyszerűsíti a Python értelmező funkcióinak beágyazását más C nyelvű alkalmazásokba;
  • Megvalósítva lett új Vectorcall protokoll az C nyelven írt objektumok gyorsabb eléréséhez. A CPython 3.8-ban a Vectorcall elérhetősége jelenleg belső használatra korlátozódik, a nyilvános API-k közé való átvitel a CPython 3.9-re van tervezve;
  • Hozzáadták Runtime Audit Hooks hívások, amelyek lehetővé teszik a Python nyelven írt alkalmazások és keretrendszerek számára, hogy alacsony szintű információkat kapjanak a szkript futása során végzett műveletekről, például nyomon követhetjük a modulok importálását, fájlok megnyitását, hibakeresést, hálózati socketek kezelését, kód végrehajtását exec, eval és run_mod segítségével;
  • A modulban pickle biztosítva van a Pickle 5 protokoll támogatása, amelyet objektumok sorosítására és deserializálására használnak. A Pickle optimalizálni tudja a nagy adatmennyiségek átvitelét a Python folyamatok között többmagos és többcsomópontos konfigurációkban, csökkentve a memória másolási műveletek számát és alkalmazva további optimalizáló technikákat, mint például bizonyos adatokhoz specifikus tömörítési algoritmusok használatát. Az ötödik protokollverzió figyelemre méltó a külön átviteli (out-of-band) mód hozzáadásával, ahol az adatok külön küldhetők a fő pickle adatfolyamtól.
  • Alapértelmezés szerint a Pickle negyedik protokollverziója aktiválva van, amely a korábban alapértelmezett harmadik verzióhoz képest magasabb teljesítményt és a továbbított adatok méretének csökkentését teszi lehetővé;
  • A modulban typing több új lehetőség került bevezetésre:
    • Osztály TypedDict asszociatív tömbök számára, amelyekben a kulcsokhoz rendelt adatok típusinformációját explicit módon kell megadni („TypedDict('Point2D', x=int, y=int, label=str)” ).
    • Típus Literal, amely lehetővé teszi egy paraméter vagy visszatérési érték korlátozását néhány előre definiált értékre („Literal['connected', 'disconnected']”).
    • A „Final„ konstrukció, amely lehetővé teszi változók, függvények, metódusok és osztályok értékeinek meghatározását, amelyek nem módosíthatók vagy újra hozzárendelhetők („pi: Final[float] = 3.1415926536”).
  • Lehetőség nyílt a bytecode-ot tartalmazó előfeldolgozott fájlok cache-ének hozzárendelésére, amely eltérő fájlrendszerben és a kódtól különálló könyvtárban kerül tárolásra. A bytecode fájlok mentési útja a PYTHONPYCACHEPREFIX változón keresztül vagy a „-X pycache_prefix” opcióval határozható meg;
  • a parancsok A Python debug build can now be created with an ABI identical to the release version, which allows loading C extensions built for stable releases in debug builds.
  • f-strings (formatted string literals with the ‘f’ prefix) now support the ‘=’ operator (for example, ‘f'{expr=}'’), allowing expressions to be output as text for easier debugging. For example:

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

  • The expression ‘continue’ is allowed within the block finally;
  • A new module has been added multiprocessing.shared_memory, allowing the use of shared memory segments in multiprocessing configurations.
  • On the Windows platform, the asyncio implementation has been switched to use the ProactorEventLoop;
  • The performance of the LOAD_GLOBAL instruction has increased by approximately 40% due to a new object code caching mechanism.

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