Comment utiliser les nouvelles fonctionnalités les plus intéressantes de Python 3.10

Le développement de Python 3.10 s’est stabilisé et nous pouvons enfin tester toutes les nouvelles fonctionnalités qui seront incluses dans la version finale.
Nous couvrirons quelques-uns des ajouts les plus intéressants à Python : correspondance de modèles structurels, gestionnaires de contexte entre parenthèses, plus de frappe et les messages d’erreur nouveaux et améliorés.
Découvrez la version vidéo de l’article ici :
Contents
Correspondance de motifs structurels
La correspondance de motifs structurels est une fonctionnalité incroyable à ajouter à Python – vraiment géniale.
Imaginez une instruction if-else qui ressemble à ceci :
Vous prenez cela et vous modifiez la syntaxe pour qu’elle ressemble plus à ceci :
Cette est le nouveau match-case
déclaration – cool, mais rien de spécial jusqu’à présent.
Qu’est-ce qui fait le match-case
déclaration si intéressante est quelque chose qui s’appelle correspondance de modèle structurel.
La correspondance de modèle structurel nous permet d’effectuer la même logique de correspondance de cas, mais en fonction de la correspondance entre la structure de notre objet de comparaison et un modèle donné.
Définissons donc deux dictionnaires, tous deux avec des structures différentes.
Maintenant, nous pourrions écrire un modèle pour correspondre dict_a
ainsi:
Et un modèle pour correspondre dict_b
trop:
Si nous rassemblons les deux dans une déclaration de cas de correspondance, à côté de ce qui est effectivement un else
/attrape-tout avec case _
– on a:
Plutôt cool non ? J’ai déjà trouvé cela incroyablement utile pour le traitement des données – dont vous pouvez trouver un exemple dans cette vidéo à 15:22.
Gestionnaires de contexte entre parenthèses
Un changement plus petit qui découle d’un changement beaucoup plus important qui est apparu avec Python 3.9 – le nouvel analyseur basé sur PEG.
L’analyseur Python précédent avait de nombreuses limitations, qui limitaient les développeurs Python dans la syntaxe qu’ils pouvaient autoriser.
L’analyseur PEG de Python 3.9 a supprimé ces barrières, ce qui à long terme pourrait conduire à une syntaxe plus élégante – notre premier exemple de ce changement est le nouveau gestionnaire de contexte entre parenthèses.
Avant Python 3.9, nous pouvions écrire quelque chose comme ceci pour ouvrir deux (ou plus) flux d’E/S de fichiers :
Cette première ligne est assez longue, trop longue en fait. Mais en raison des limitations de l’analyseur, la seule façon de diviser cette ligne sur plusieurs lignes était d’utiliser le caractère de continuation de ligne :
Cela fonctionne, mais ce n’est pas Pythonic. Avec le nouvel analyseur, nous sommes maintenant en mesure de diviser cette ligne sur plusieurs lignes en utilisant parenthèses ainsi:
Lequel est Pythonique.
Maintenant, avant de continuer, il y a une petite bizarrerie dans ce Nouveau fonctionnalité. Ce n’est pas tout à fait nouveau…
Si on écrit :
En Python 3.9 — ça marche. C’est parce que le nouvel analyseur a activé cette syntaxe, bien qu’elle ne soit pas officiellement supporté jusqu’à Python 3.10.
Plus de saisie
Il y a aussi plus de mises à jour des fonctionnalités de frappe de Python, sur lesquelles j’ai écrit plus en détail ici si vous êtes intéressé.
L’ajout le plus intéressant ici est l’inclusion d’un nouvel opérateur qui se comporte comme un OU ALORS logique pour les types, quelque chose que nous avons précédemment utilisé le Union
méthode pour :
Maintenant, nous n’avons pas besoin d’écrire from typing import Union
, et Union[int, float]
a été simplifié en int | float
– qui a l’air beaucoup plus propre :
Meilleurs messages d’erreur
Dites-moi que vous n’avez pas sauté sur Google la première fois que vous avez vu :
SyntaxError : EOF inattendu lors de l’analyse
Le résultat numéro un dans Google lors de la saisie Erreur de syntaxe suggère que beaucoup d’entre nous l’ont certainement fait à un moment donné.
Ce n’est pas un message d’erreur clair, et Python est plein de moins qu’idéal messages d’erreur. Heureusement, quelqu’un l’a remarqué – et beaucoup de ces messages ont été considérablement améliorés.

Il y a quelques autres changements qui sont mentionnés sur la liste officielle des changements – mais ne semblaient pas apparaître pendant les tests, notamment :
à partir des collections importer namedtoplo> AttributeError : le module ‘collections’ n’a pas d’attribut ‘namedtoplo’. Vouliez-vous dire : tuple nommé ?
Ici le AttributeError
est le même que précédemment, mais avec un ajout suggéré attribut Nom – namedtoplo
est identifié comme une faute de frappe potentielle de l’attribut namedtuple
.
Dans le même ordre d’idées, nous constatons la même amélioration pour NameError
messages:
nouvelle_var = 5
imprimer(nouveau_vr)> NameError : le nom ‘new_vr’ n’est pas défini. Vouliez-vous dire : new_var ?
Il y a aussi beaucoup d’autres mises à jour des messages d’erreur ! Vérifiez-les tous ici
C’est tout!
Voici donc quelques-unes des nouvelles fonctionnalités clés introduites avec Python 3.10.
La version complète est attendue le 4 octobre 2021, d’ici là, les développeurs Python travailleront à améliorer ce qui a déjà été ajouté – mais pas de nouveau fonctionnalités seront introduites.
Si vous souhaitez le vérifier vous-même, 3.10.0b1 peut être téléchargé à partir de ici.
J’espère que cet article vous a plu ! Si vous avez des questions, faites le moi savoir via Twitter ou dans les commentaires ci-dessous. Si vous souhaitez plus de contenu comme celui-ci, je poste sur Youtube trop.
Cette article a été initialement publié le Vers la science des données par James Briggs, un consultant en IA basé à Londres. Il est fasciné par les progrès phénoménaux réalisés quotidiennement au sein de l’écosystème technologique et adore écrire sur l’IA, Python et la programmation en général.