Python 3.8¶
Python 3.8.0 (finální) byl vydán 14. října 2019. Funkce pro 3.8 jsou definovány v PEP 569 a podrobný popis změn lze nalézt v Co je nového v Pythonu 3.8.
Funkce | Stav | |
Pouze poziční argumenty | ||
Přiřazovací výrazy | Hotovo | |
Pickle protokol 5 s daty mimo pásmo (out-of-band) | ||
Auditovací hooky za běhu | ||
Konfigurace inicializace Pythonu | ||
Vectorcall: rychlý protokol volání pro CPython | ||
Různé | ||
f-řetězce podporují = pro samodokumentující výrazy a ladění | Hotovo | |
Další změny v jazyce:
Příkaz continue byl v klauzuli finally nepřípustný kvůli problému s implementací. V Pythonu 3.8 bylo toto omezení odstraněno | Hotovo |
Typy bool, int a fractions.Fraction nyní mají metodu as_integer_ratio() podobnou té, která se nachází v float a decimal.Decimal | |
Konstruktory int, float a complex nyní použijí speciální metodu __index__(), pokud je dostupná a odpovídající metoda __int__(), __float__() nebo __complex__() dostupná není | |
Byla přidána podpora escape sekvencí N{name} v regulárních výrazech | |
Dict a dictviews jsou nyní iterovatelné v obráceném pořadí vkládání pomocí reversed() | |
Syntaxe povolená pro názvy klíčových argumentů ve voláních funkcí byla dále omezena. Konkrétně f((keyword)=arg) již není povoleno | |
Zobecněné rozbalování iterovatelných objektů v příkazech yield a return již nevyžaduje uzavírající závorky | |
Když je v kódu jako [(10, 20) (30, 40)] vynechána čárka, kompilátor zobrazí SyntaxWarning s užitečným návrhem | |
Aritmetické operace mezi podtřídami datetime.date nebo datetime.datetime a objekty datetime.timedelta nyní vracejí instanci podtřídy namísto bázové třídy | |
Když je interpret Pythonu přerušen pomocí Ctrl-C (SIGINT) a výsledná výjimka KeyboardInterrupt není zachycena, proces Pythonu nyní končí prostřednictvím signálu SIGINT nebo se správným návratovým kódem tak, aby volající proces mohl zjistit, že proces zemřel kvůli Ctrl-C | |
Některé pokročilé styly programování vyžadují aktualizaci objektu types.CodeType pro existující funkci | |
Pro celá čísla nyní tříargumentová forma funkce pow() umožňuje, aby byl exponent záporný v případě, kdy je základ nesoudělný s modulem | |
Komprehenze slovníků byly sjednoceny se slovníkovými literály tak, že se nejprve vypočte klíč a poté hodnota | |
Metoda object.__reduce__() nyní může vracet n-tici o délce dva až šest prvků |
Změny ve vestavěných modulech:
asyncio.run() se posunula z předběžného na stabilní API | Hotovo |
Spuštění python -m asyncio spustí nativně asynchronní REPL | |
Výjimka asyncio.CancelledError nyní dědí z BaseException namísto Exception a již nedědí z concurrent.futures.CancelledError | Hotovo |
Byla přidána asyncio.Task.get_coro() pro získání zabalené korutiny v rámci asyncio.Task | |
Úlohy asyncio lze nyní pojmenovat, a to buď předáním klíčového argumentu name funkci asyncio.create_task() nebo metodě smyčky událostí create_task(), nebo voláním metody set_name() na objektu úlohy | |
Byla přidána podpora Happy Eyeballs do asyncio.loop.create_connection(). K určení chování byly přidány dva nové parametry: happy_eyeballs_delay a interleave. | |
get_objects() nyní může přijímat volitelný parametr generation udávající generaci, ze které se mají objekty získat. (Pamatujte však, že ačkoli gc je vestavěný modul, get_objects() není pro MicroPython implementována) | |
Byla přidána nová funkce math.dist() pro výpočet euklidovské vzdálenosti mezi dvěma body | |
Funkce math.hypot() byla rozšířena tak, aby zvládala více dimenzí | |
Byla přidána nová funkce math.prod() jako obdoba funkce sum(), která vrací součin počáteční hodnoty „start“ (výchozí: 1) a iterovatelné posloupnosti čísel | |
Byly přidány dvě nové kombinatorické funkce math.perm() a math.comb() | |
Byla přidána nová funkce math.isqrt() pro výpočet přesných celočíselných druhých odmocnin bez převodu na plovoucí desetinnou čárku | |
Funkce math.factorial() již nepřijímá argumenty, které nejsou celočíselného typu | Hotovo |
Byla přidána nová funkce sys.unraisablehook(), kterou lze přepsat pro řízení toho, jak se zpracovávají „unraisable exceptions“ | |