Cele mai interesante noutăți:
- Expresie atribuitoare:
Noul operator := permite atribuirea valorilor variabilelor în interiorul expresiilor. De exemplu:
if (n := len(a)) > 10:
print(f"Lista este prea lungă ({n} elemente, așteptate <= 10)") - Argumente doar prin poziție:
Acum poți specifica ce parametri ai funcțiilor pot fi transmiși prin sintaxa argumentelor numite și care nu. Exemplu:
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) # eroare, `b` nu poate fi un argument numit
f(10, 20, 30, 40, 50, f=60) # eroare, `e` trebuie să fie un argument numitAceastă modificare oferă dezvoltatorilor o modalitate de a proteja utilizatorii API-urilor lor de modificările numelui argumentelor funcțiilor.
- Suport pentru f-string-uri = pentru expresii auto-documentante și depanare:
A fost adăugat un sintaxă suplimentară pentru a simplifica mesajele de depanare/logare.
n = 42
print(f’Hello world {n=}.’)
# напечатает "Hello world n=42." - Cuvântul cheie continue din blocul finally a fost corectat (anterior nu funcționa).
Altele:
- Poți specifica explicit calea către cache-ul bytecode-ului în loc de __pycache__ implicit.
- Construcțiile Debug și Release folosesc același ABI.
Sursa: linux.org.ru
