Les nouveautés les plus intéressantes :
- Expression d'affectation :
Le nouvel opérateur := permet d'assigner des valeurs aux variables à l'intérieur des expressions. Par exemple :
if (n := len(a)) > 10:
print(f"La liste est trop longue ({n} éléments, attendu <= 10)") - Arguments uniquement positionnels :
Vous pouvez maintenant indiquer quels paramètres de fonction peuvent être transmis via la syntaxe des arguments nommés, et lesquels ne le peuvent pas. Exemple :
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) # erreur, `b` ne peut pas être un argument nommé
f(10, 20, 30, 40, 50, f=60) # erreur, `e` doit être un argument nomméCe changement donne aux développeurs un moyen de protéger les utilisateurs de leurs API contre les modifications dans les noms des arguments de fonction.
- Support des f-strings = pour des expressions auto-documentées et le débogage :
Du sucre syntaxique a été ajouté pour simplifier les messages de débogage / de log.
n = 42
print(f’Hello world {n=}.’)
# напечатает "Hello world n=42." - Correction du mot-clé continue dans le bloc finally (il ne fonctionnait pas auparavant).
Autres :
- Vous pouvez explicitement indiquer le chemin du cache de bytecode au lieu du __pycache__ par défaut.
- Les builds Debug et Release utilisent le même ABI.
Source : linux.org.ru
