As novidades máis interesantes:
- Expresión da tarefa:
O novo operador := permítelle asignar valores ás variables dentro das expresións. Por exemplo:
se (n := len(a)) > 10:
print(f"A lista é demasiado longa ({n} elementos, espérase <= 10)") - Argumentos só posicionais:
Agora podes especificar que parámetros de función se poden pasar a través da sintaxe do argumento nomeado e cales non. Exemplo:
def f(a, b, /, c, d, *, e, f):
imprimir (a, b, c, d, e, f)f(10, 20, 30, d=40, e=50, f=60) # Aceptar
f(10, b=20, c=30, d=40, e=50, f=60) # erro, `b` non pode ser un argumento con nome
f(10, 20, 30, 40, 50, f=60) # erro, `e` debe ser un argumento con nomeEste cambio ofrece aos desenvolvedores unha forma de protexer aos usuarios das súas API de cambios nos nomes dos argumentos das funcións.
- Admite cadeas f = para expresións de autodocumentación e depuración:
Azucre engadido para simplificar as mensaxes de depuración/rexistro.
n = 42
imprimir(f'Ola mundo {n=}.')
# imprimirá "Ola mundo n=42". - Corrixiuse a palabra clave continue no bloque finally (antes non funcionaba).
Outros:
- Podes especificar explícitamente o camiño á caché de bytecode en lugar do __pycache__ predeterminado.
- As compilacións de depuración e liberación usan o mesmo ABI.
Fonte: linux.org.ru