Python 3.9, tour d’horizon et nouveautés

Tour d'horizon sur Python 3.9

Python 3.9, tour d’horizon

Python 3.9 vient d’être annoncé le 6 Octobre 2020. Cette version amène plusieurs fonctionnalités très prometteuses. Corrige des bugs et se positionne par rapport à l’avenir du langage. A Cyrès, nous constatons une augmentation des développements Python, que ce soit dans le domaine du Big Data, des containeurs ou DevOps, Des implémentations d’architectures Lambda pour des traitements, peuvent être créées en Python.

Faisons le tour des fonctionnalités majeures les plus intéressantes !

Nouveau parser

Peut-être l’avancée majeure de cette version, la 3.9 propose un nouveau parser basé sur PEG, qui se veut plus flexible, plus performant et plus complet que l’ancien parser LL(1)
Quelques infos sur la différence entre les deux parser : https://stackoverflow.com/questions/8816759/ll-versus-peg-parsers-what-is-the-difference

Disponible dans la 3.9, il est annoncé que la flexibilité et toute la puissance se constatera dans la version à venir 3.10.

Lien de la doc : https://www.python.org/dev/peps/pep-0617

Amélioration des performances

En plus de bénéficier d’un nouveau parser, cette version utilise maintenant le protocole VectorCall. Il permet de minimiser ou éliminer les objets temporaires. Dans l’ancienne implémentation il était nécessaire de passer par des tuples intermédiaires lors des appels internes, ce qui baissait les performances d’exécution.

Lien de la doc : https://www.python.org/dev/peps/pep-0590

Merge et mise à jour des dictionnaires

Il est maintenant possible de merge simplement deux dictionnaires. Si des clefs existent dans les deux, alors elles seront mises à jour. On peut également ajouter des clefs à un dictionnaire à partir d’un autre dictionnaire.

L’opérateur « | » sert donc à merger :

merge dict python
Merge dictionnaire en python 3.9

 

L’opérateur « |= » sert à mettre à jour :

concat dict python
Update dictionnaire en Python 3.9

Lien de la doc : https://www.python.org/dev/peps/pep-0584/

Gestion des chaines de caractère

« str.removeprefix(substring: string) » permet de supprimer le prefix d’une chaine de caractère plus simplement que dans les versions précédentes.
La méthode « str.removesuffix(substring: string) » quant à elle supprime le suffix.

remove preffix suffix
Supprime les préfixes ou les suffixes en Python 3.9

Cette nouvelle approche permet :

    • D’être moins dépendant de l’implémentation utilisateure, calcul de la longueur via ‘len’
    • Plus performant, pas d’appel à ‘len’
    • Plus descriptif et beaucoup plus lisible

Lien de la doc : https://www.python.org/dev/peps/pep-0616/

Typage des variables pour les objets génériques

Python est connu pour ne pas avoir à se soucier explicitement du type des variables. Depuis la 3.5 il est possible de spécifier le type, pas forcément des plus clair comme méthode… Maintenant avec Python 3.9, il est possible de spécifier cela avec une forme assez simple et lisible :

function type hint
Définition d’une méthode en python 3.9

Lien de la doc : https://www.python.org/dev/peps/pep-0585/

Et plus encore

Cette nouvelle version intègre également :

Liste des améliorations des modules : https://docs.python.org/3.9/whatsnew/3.9.html#improved-modules

Cette nouvelle release annonce du changement, des performances, de la lisibilité et des améliorations pratiques. Avec un nouveau cycle de release annuel, la communauté Python ne cesse d’aller de l’avant, hâte de voir ce qu’ils nous réservent pour la suite ! En espérant que les applicatifs suivent pour supporter cette version 3.9.