Python 3.8

A Python 3.8.0 (végleges) 2019. október 14-én jelent meg. A 3.8 funkcióit a PEP 569 definiálja, a változások részletes leírása pedig a What’s New in Python 3.8. oldalon található.

Funkciók

Állapot

PEP 570

Csak pozíció szerinti argumentumok

PEP 572

Értékadó kifejezések

Kész

PEP 574

Pickle protokoll 5 sávon kívüli adatokkal

PEP 578

Futásidejű auditálási horgok

PEP 587

Python inicializálási konfiguráció

PEP 590

Vectorcall: gyors hívási protokoll a CPythonhoz

Vegyes

Az f-stringek támogatják a = jelet az önmagukat dokumentáló kifejezésekhez és a hibakereséshez

Kész

Egyéb nyelvi változások:

Egy continue utasítás a megvalósítással kapcsolatos probléma miatt nem volt megengedett a finally záradékban. A Python 3.8-ban ez a korlátozás megszűnt

Kész

A bool, az int és a fractions.Fraction típusok mostantól rendelkeznek egy as_integer_ratio() metódussal, hasonlóan ahhoz, amely a float és a decimal.Decimal típusokban található

Az int, a float és a complex konstruktorai mostantól a __index__() speciális metódust használják, ha az elérhető és a megfelelő __int__(), __float__() vagy __complex__() metódus nem érhető el

Hozzáadásra került a N{name} escape-ek támogatása reguláris kifejezésekben

A dict és a dictview objektumok mostantól fordított beillesztési sorrendben iterálhatók a reversed() segítségével

A függvényhívásokban a kulcsszónevekre megengedett szintaxis tovább szigorodott. Konkrétan az f((keyword)=arg) már nem megengedett

Az általánosított iterálható kicsomagolás a yield és a return utasításokban már nem igényel körülvevő zárójeleket

Amikor egy vessző hiányzik egy olyan kódban, mint a [(10, 20) (30, 40)], a fordító egy SyntaxWarning üzenetet jelenít meg hasznos javaslattal

A datetime.date vagy datetime.datetime alosztályai és a datetime.timedelta objektumok közötti aritmetikai műveletek mostantól az alosztály egy példányát adják vissza, nem pedig az alaposztályét

Amikor a Python értelmezőt egy Ctrl-C (SIGINT) megszakítja, és az így keletkező KeyboardInterrupt kivételt nem kapják el, a Python folyamat mostantól egy SIGINT jelen keresztül lép ki, vagy a helyes kilépési kóddal, így a hívó folyamat észlelheti, hogy a folyamat egy Ctrl-C miatt halt meg

A programozás néhány haladó stílusa megköveteli a types.CodeType objektum frissítését egy meglévő függvényhez

Egész számok esetén a pow() függvény háromargumentumos formája mostantól megengedi, hogy a kitevő negatív legyen abban az esetben, ha az alap relatív prím a modulushoz

A dict-értelmezések szinkronizálva lettek a dict-literálokkal, így a kulcs számítódik ki először, az érték pedig másodikként

Az object.__reduce__() metódus mostantól egy kettőtől hat elem hosszúságú tuple-t adhat vissza

A beépített modulok változásai:

asyncio

Az asyncio.run() az ideiglenes API-ból a stabil API szintjére lépett

Kész

A python -m asyncio futtatása egy natívan aszinkron REPL-t indít el

Az asyncio.CancelledError kivétel mostantól a BaseException-től örököl, nem pedig az Exception-től, és többé nem örököl a concurrent.futures.CancelledError-tól

Kész

Hozzáadásra került az asyncio.Task.get_coro() az asyncio.Task objektumon belül becsomagolt coroutine lekéréséhez

Az asyncio taszkok mostantól elnevezhetők, akár a name kulcsszó-argumentum átadásával az asyncio.create_task()-nek vagy a create_task() eseményhurok-metódusnak, akár a set_name() metódus meghívásával a taszk objektumon

Hozzáadásra került a Happy Eyeballs támogatása az asyncio.loop.create_connection()-hoz. A viselkedés megadásához két új paraméter került hozzáadásra: a happy_eyeballs_delay és az interleave.

gc

A get_objects() mostantól kaphat egy opcionális generation paramétert, amely azt a generációt jelzi, amelyből az objektumokat le kell kérni. (Megjegyzendő azonban, hogy bár a gc beépített, a get_objects() nincs megvalósítva a MicroPythonban)

math

Hozzáadásra került egy új függvény, a math.dist(), két pont közötti euklideszi távolság kiszámításához

A math.hypot() függvény kibővítésre került több dimenzió kezelésére

Hozzáadásra került egy új függvény, a math.prod(), a sum() analóg megfelelőjeként, amely egy „start” érték (alapértelmezett: 1) és egy iterálható számhalmaz szorzatát adja vissza

Hozzáadásra került két új kombinatorikai függvény, a math.perm() és a math.comb()

Hozzáadásra került egy új függvény, a math.isqrt(), amellyel pontos egész négyzetgyökök számíthatók ki lebegőpontos átalakítás nélkül

A math.factorial() függvény többé nem fogad el olyan argumentumokat, amelyek nem int-szerűek

Kész

sys

Hozzáadásra került egy új sys.unraisablehook() függvény, amely felülírható annak szabályozására, hogy a „nem felvethető kivételek” hogyan kerüljenek kezelésre