Nejzajímavější novinky:
- Přiřazovací výraz:
Nový operator := umožňuje přiřazovat hodnoty proměnným uvnitř výrazů. Například:
if (n := len(a)) > 10:
print(f"Seznam je příliš dlouhý ({n} prvků, očekáváno <= 10)") - Položkově pouze argumenty:
Nyní je možné určit, které parametry funkcí mohou být předávány pomocí syntaxe pojmenovaných argumentů, a které nikoli. Příklad:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)f(10, 20, 30, d=40, e=50, f=60) # OK
f(10, b=20, c=30, d=40, e=50, f=60) # chyba, `b` nemůže být pojmenovaný argument
f(10, 20, 30, 40, 50, f=60) # chyba, `e` musí být pojmenovaný argumentTato změna dává vývojářům způsob, jak chránit uživatele svých API před změnami v názvech argumentů funkcí.
- Podpora f-řetězců = pro sebedokumentující výrazy a ladění:
Přidána syntaktická cukr pro zjednodušení ladících/loggujících zpráv.
n = 42
print(f'Hello world {n=}.')
# напечатает "Hello world n=42." - Opraven klíčové slovo continue v bloku finally (dříve nefungovalo).
Ostatní:
- Lze explicitně určit cestu k mezipaměti bajtkódu místo výchozího __pycache__.
- Debug a Release sestavení používají stejný ABI.
Zdroj: linux.org.ru
