Python 3.9

Python 3.9.0 (finální) byl vydán 5. října 2020. Funkce pro 3.9 jsou definovány v PEP 596 a podrobný popis změn lze nalézt v Co je nového v Pythonu 3.9

Funkce

Stav

PEP 573

Rychlý přístup ke stavu modulu z metod typů C rozšíření

Není relevantní

PEP 584

Sjednocovací operátory přidané do dict

Hotovo [1]

PEP 585

Typové anotace generik ve standardních kolekcích

PEP 593

Flexibilní anotace funkcí a proměnných

PEP 602

CPython přijímá roční cyklus vydávání. Namísto ročního usiluje o dvouměsíční cyklus vydávání

Není relevantní

PEP 614

Uvolněná gramatická omezení dekorátorů

PEP 615

Databáze časových zón IANA je nyní přítomna ve standardní knihovně v modulu zoneinfo

PEP 616

Řetězcové metody pro odstranění předpon a přípon

PEP 617

CPython nyní používá nový parser založený na PEG

Není relevantní

Další změny v jazyce:

__import__() nyní vyvolává ImportError namísto ValueError

Hotovo

Python nyní získává absolutní cestu k názvu skriptu zadanému na příkazové řádce (např.: python3 script.py): atribut __file__ modulu __main__ se stal absolutní cestou namísto relativní cesty

Ve výchozím nastavení se pro nejlepší výkon argument errors kontroluje pouze při první chybě kódování/dekódování a argument encoding je u prázdných řetězců někdy ignorován

„“.replace(„“, s, n) nyní vrací s namísto prázdného řetězce pro všechna nenulová n. Nyní je to konzistentní s „“.replace(„“, s)

Jako dekorátor lze nyní použít jakýkoli platný výraz. Dříve byla gramatika mnohem omezenější

Paralelní spouštění aclose() / asend() / athrow() je nyní zakázáno a ag_running nyní odráží skutečný stav běhu asynchronního generátoru

Neočekávané chyby při volání metody __iter__ již nejsou maskovány výjimkou TypeError v operátoru in a ve funkcích contains(), indexOf() a countOf() modulu operator

Lambda výrazy bez závorek již nemohou být výrazovou částí v klauzuli if v komprehenzích a generátorových výrazech

Změny ve vestavěných modulech:

asyncio

Kvůli závažným bezpečnostním obavám již parametr reuse_address funkce asyncio.loop.create_datagram_endpoint() není podporován

Byla přidána nová korutina shutdown_default_executor(), která naplánuje vypnutí výchozího exekutoru a čeká, až ThreadPoolExecutor dokončí zavírání. Také asyncio.run() byla aktualizována, aby používala novou korutinu.

Byla přidána asyncio.PidfdChildWatcher, implementace sledovače potomků specifická pro Linux, která dotazuje deskriptory souborů procesů

byla přidána nová korutina asyncio.to_thread()

Při rušení úlohy kvůli vypršení časového limitu bude nyní asyncio.wait_for() čekat, dokud nebude zrušení dokončeno, a to i v případě, kdy je časový limit <= 0, stejně jako u kladných časových limitů

asyncio nyní vyvolává TyperError při volání nekompatibilních metod se socketem ssl.SSLSocket

gc

Sběr odpadu se neblokuje na vzkříšených objektech

Byla přidána nová funkce gc.is_finalized() pro kontrolu, zda byl objekt finalizován sběračem odpadu

math

Funkce math.gcd() byla rozšířena tak, aby zvládala více argumentů. Dříve podporovala pouze dva argumenty

Byla přidána math.lcm(): vrací nejmenší společný násobek zadaných argumentů

Byla přidána math.nextafter(): vrací následující hodnotu s plovoucí desetinnou čárkou po x směrem k y

Byla přidána math.ulp(): vrací hodnotu nejméně významného bitu hodnoty s plovoucí desetinnou čárkou

os

Byly vystaveny linuxově specifické os.pidfd_open() a os.P_PIDFD

Funkce os.unsetenv() je nyní k dispozici také ve Windows

Hotovo

Funkce os.putenv() a os.unsetenv() jsou nyní vždy dostupné

Hotovo

Byla přidána funkce os.waitstatus_to_exitcode(): převede stav čekání na návratový kód

random

Byla přidána nová metoda random.Random.randbytes: generuje náhodné bajty

sys

Byl přidán nový atribut sys.platlibdir: název adresáře knihoven specifického pro platformu

Dříve byl sys.stderr při neinteraktivním provozu blokově bufferovaný. Nyní je stderr ve výchozím nastavení vždy řádkově bufferovaný

Poznámky