Novità più interessanti:
- Espressione di assegnazione:
Il nuovo operatore := consente di assegnare valori a variabili all'interno delle espressioni. Ad esempio:
if (n := len(a)) > 10:
print(f"La lista è troppo lunga ({n} elementi, previsto <= 10)") - Argomenti solo posizionali:
Ora è possibile specificare quali parametri delle funzioni possono essere passati tramite la sintassi degli argomenti nominati e quali no. Esempio:
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) # errore, `b` non può essere un argomento nominato
f(10, 20, 30, 40, 50, f=60) # errore, `e` deve essere un argomento nominatoQuesta modifica offre agli sviluppatori un modo per proteggere gli utenti delle loro API da cambiamenti nei nomi degli argomenti delle funzioni.
- Supporto per f-string = per espressioni auto-documentanti e debug:
Aggiunto zucchero per semplificare i messaggi di debug/log.
n = 42
print(f’Hello world {n=}.’)
# напечатает "Hello world n=42." - Corretto la parola chiave continue nel blocco finally (precedentemente non funzionava).
Altro:
- È possibile specificare esplicitamente il percorso della cache dei bytecode invece del predefinito __pycache__.
- Debug e Release utilizzano lo stesso ABI.
Fonte: linux.org.ru
