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