Python 3.9

A Python 3.9.0 (végleges) 2020. október 5-én jelent meg. A 3.9 funkcióit a PEP 596 definiálja, a változások részletes leírása pedig a What’s New in Python 3.9 oldalon található.

Funkciók

Állapot

PEP 573

Gyors hozzáférés a modulállapothoz a C bővítménytípusok metódusaiból

Nem releváns

PEP 584

Unió operátorok hozzáadása a dict-hez

Kész [1]

PEP 585

Típusjelölő generikusok a standard gyűjteményekben

PEP 593

Rugalmas függvény- és változó-annotációk

PEP 602

A CPython éves kiadási ciklust vezet be. Az éves helyett kéthavonkénti kiadási ciklust megcélozva

Nem releváns

PEP 614

Lazább nyelvtani korlátozások a dekorátorokon

PEP 615

Az IANA időzóna-adatbázis mostantól jelen van a standard könyvtárban a zoneinfo modulban

PEP 616

Karakterlánc-metódusok előtagok és utótagok eltávolításához

PEP 617

A CPython mostantól egy PEG-alapú új elemzőt használ

Nem releváns

Egyéb nyelvi változások:

Az __import__() mostantól ImportError-t vet fel a ValueError helyett

Kész

A Python mostantól lekéri a parancssorban megadott szkriptfájlnév abszolút útvonalát (pl.: python3 script.py): a __main__ modul __file__ attribútuma relatív útvonal helyett abszolút útvonal lett

A legjobb teljesítmény érdekében alapértelmezetten az errors argumentum csak az első kódolási/dekódolási hibánál kerül ellenőrzésre, az encoding argumentumot pedig az üres karakterláncok esetén olykor figyelmen kívül hagyja

A „”.replace(„”, s, n) mostantól s-t ad vissza üres karakterlánc helyett minden nem nulla n esetén. Ez mostantól összhangban van a „”.replace(„”, s)-szel

Mostantól bármely érvényes kifejezés használható dekorátorként. Korábban a nyelvtan ennél jóval szigorúbb volt

Az aclose() / asend() / athrow() párhuzamos futtatása mostantól tiltott, és az ag_running mostantól az aszinkron generátor tényleges futási állapotát tükrözi

A __iter__ metódus hívása során fellépő váratlan hibákat többé nem fedi el a TypeError az in operátorban, valamint az operator modul contains(), indexOf() és countOf() függvényeiben

A zárójel nélküli lambda kifejezések többé nem lehetnek a kifejezés-rész egy if záradékban listaértelmezésekben és generátorkifejezésekben

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

asyncio

Jelentős biztonsági aggályok miatt az asyncio.loop.create_datagram_endpoint() reuse_address paramétere többé nem támogatott

Hozzáadásra került egy új coroutine, a shutdown_default_executor(), amely leállítást ütemez az alapértelmezett végrehajtóhoz, és megvárja, amíg a ThreadPoolExecutor befejezi a lezárást. Ezenkívül az asyncio.run() frissítésre került az új coroutine használatára.

Hozzáadásra került az asyncio.PidfdChildWatcher, egy Linux-specifikus gyermekfigyelő megvalósítás, amely a folyamat-fájlleírókat pollozza

hozzáadásra került egy új coroutine asyncio.to_thread()

A taszk időtúllépés miatti megszakításakor az asyncio.wait_for() mostantól megvárja, amíg a megszakítás befejeződik, abban az esetben is, amikor a timeout <= 0, ahogyan ezt a pozitív időtúllépéseknél is teszi

Az asyncio mostantól TyperError-t vet fel, amikor inkompatibilis metódusokat hívnak meg egy ssl.SSLSocket sockettel

gc

A szemétgyűjtés nem blokkol a feltámasztott objektumokon

Hozzáadásra került egy új függvény, a gc.is_finalized(), annak ellenőrzésére, hogy egy objektumot véglegesített-e a szemétgyűjtő

math

A math.gcd() függvény kibővítésre került több argumentum kezelésére. Korábban csak két argumentumot támogatott

Hozzáadásra került a math.lcm(): a megadott argumentumok legkisebb közös többszörösét adja vissza

Hozzáadásra került a math.nextafter(): az x utáni következő lebegőpontos értéket adja vissza y irányában

Hozzáadásra került a math.ulp(): egy float legkisebb helyiértékű bitjének értékét adja vissza

os

Elérhetővé tette a Linux-specifikus os.pidfd_open()-t és az os.P_PIDFD-t

Az os.unsetenv() függvény mostantól Windowson is elérhető

Kész

Az os.putenv() és az os.unsetenv() függvény mostantól mindig elérhető

Kész

Hozzáadásra került az os.waitstatus_to_exitcode() függvény: egy wait státuszt kilépési kóddá alakít

random

Hozzáadásra került egy új random.Random.randbytes metódus: véletlen bájtokat generál

sys

Hozzáadásra került egy új sys.platlibdir attribútum: a platform-specifikus könyvtár neve

Korábban a sys.stderr blokk-pufferelt volt nem interaktív módban. Mostantól a stderr alapértelmezetten mindig sor-pufferelt

Megjegyzések