Les innovations les plus intéressantes :
- Expression d'affectation :
Le nouvel opérateur := vous permet d'attribuer des valeurs aux variables dans les expressions. Par exemple:
si (n := len(a)) > 10 :
print(f"La liste est trop longue ({n} éléments, attendu <= 10)") - Arguments de position uniquement :
Vous pouvez désormais spécifier quels paramètres de fonction peuvent être transmis via la syntaxe d'argument nommé et lesquels ne le peuvent pas. Exemple:
déf f(une, b, /, c, ré, *, e, f) :
imprimer(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 des noms d'arguments de fonction.
- Prise en charge des f-strings = pour les expressions auto-documentées et le débogage :
Sucre ajouté pour simplifier les messages de débogage/journalisation.
n = 42
print(f'Bonjour tout le monde {n=}.')
# affichera "Bonjour tout le monde n=42." - Correction du mot-clé continue dans le bloc enfin (cela ne fonctionnait pas avant).
autres:
- Vous pouvez spécifier explicitement le chemin d'accès au cache de bytecode au lieu du __pycache__ par défaut.
- Les versions Debug et Release utilisent le même ABI.
Source: linux.org.ru