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“ |
|