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 |
|
Rychlý přístup ke stavu modulu z metod typů C rozšíření |
Není relevantní |
|
Sjednocovací operátory přidané do dict |
Hotovo [1] |
|
Typové anotace generik ve standardních kolekcích |
||
Flexibilní anotace funkcí a proměnných |
||
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í |
|
Uvolněná gramatická omezení dekorátorů |
||
Databáze časových zón IANA je nyní přítomna ve standardní knihovně v modulu zoneinfo |
||
Řetězcové metody pro odstranění předpon a přípon |
||
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:
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 |
|
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 |
|
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 |
|
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 |
|
Byla přidána nová metoda random.Random.randbytes: generuje náhodné bajty |
|
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