Menu
in

4 clés pour écrire du Python moderne

Bien que Python ait célébré son 30e anniversaire en 2021, l’explosion de l’adoption, de la croissance et du développement avant-gardiste associé au langage est encore relativement nouvelle. De nombreuses fonctionnalités de Python sont restées inchangées depuis sa création, mais chaque année qui passe et chaque nouvelle édition de Python apparaissent de nouvelles façons de faire et de nouvelles bibliothèques qui profitent de ces avancées.

Ainsi, Python a ses anciennes méthodes et ses nouvelles méthodes. Naturellement, il est logique d'apprendre à travailler avec Python en utilisant ses fonctionnalités les plus modernes et les plus pratiques. Ici, nous passerons en revue les concepts clés que vous devez comprendre pour écrire moderne Python en 2024 : un logiciel qui utilise les derniers et meilleurs idiomes, concepts et fonctionnalités de Python.

Indice de saisie en Python

La syntaxe d'indication de type récemment introduite par Python permet aux linters et aux outils de qualité de code tiers d'analyser votre code avant l'exécution et de détecter d'éventuelles erreurs avant qu'elles ne surviennent. Plus vous créez du code Python à partager avec d’autres, plus vous (et tout le monde !) aurez de chances de bénéficier de l’utilisation des astuces de type.

Chaque révision successive de Python déploie des annotations de type plus sophistiquées et plus puissantes. Si vous prenez l'habitude d'apprendre à utiliser les annotations de type à court terme, vous serez mieux équipé pour utiliser chaque nouvelle innovation d'indication de type au fur et à mesure de son introduction.

Il est important de se rappeler que les indices de type sont facultatifpas obligatoire. Tous les projets n’en ont pas besoin. Utilisez des astuces de type pour rendre vos projets plus importants compréhensibles, mais n'hésitez pas à les omettre dans un script jetable de 50 lignes. Et, bien que les indications de type ne soient pas appliquées au moment de l'exécution, vous pouvez utiliser Pydantic pour rendre cela possible. De nombreux projets Python largement utilisés utilisent largement Pydantic – FastAPI en est un exemple.

Environnements virtuels Python et gestion des packages

Pour des projets simples et des tâches de développement peu exigeantes, vous pouvez souvent simplement utiliser le module intégré de Python. venv outil pour séparer les projets et leurs exigences. Mais les progrès récents des outils Python vous offrent plus d'options :

  • Pyenv: Si vous devez conserver plusieurs versions de Python installées pour répondre aux différentes exigences du projet, Pyenv vous permet de basculer entre elles globalement ou par projet. C'est utile si vous travaillez beaucoup avec différentes éditions de Python directement sur la ligne de commande, en dehors du contexte d'un environnement virtuel par projet. Notez qu'il n'existe pas de support Windows officiel, mais un port Windows non officiel existe.
  • Pipenv: Présenté comme « workflow de développement Python pour les humains », Pipenv est destiné à gérer un environnement virtuel ainsi que toutes les dépendances de votre projet. Cela garantit également que les dépendances sont déterministe, ce qui signifie que vous obtenez les versions spécifiques que vous souhaitez et qu'elles fonctionnent dans la combinaison que vous demandez. Pipenv ne parle cependant pas d'empaquetage sous quelque forme que ce soit, il n'est donc pas idéal pour les projets que vous souhaitez éventuellement télécharger sur PyPI ou partager avec d'autres.
  • Poésie: En s'étendant sur l'ensemble d'outils de Pipenv, Poetry gère non seulement les projets et les exigences, mais facilite également le déploiement du projet sur PyPI. Il gère également les environnements virtuels pour vous, indépendamment des répertoires de votre projet.
  • MPD: PDM (abréviation de Python Development Master) est un projet récent et avant-gardiste dans cette veine. Comme Poetry et Pipenv, PDM vous offre une interface unique pour configurer un projet, gérer ses dépendances et créer des artefacts de distribution à partir de celui-ci. PDM utilise également la norme PEP 582 pour stocker les packages localement dans un projet, il n'est donc pas nécessaire de créer des environnements virtuels par projet. Mais cet outil est relativement nouveau, alors assurez-vous qu’il fonctionne provisoirement avant de l’adopter en production.
  • Trappe: Le projet Hatch gère non seulement la configuration et la gestion du projet, mais fournit également un système de construction, des outils pour empaqueter des projets pour la redistribution sur PyPI, la gestion des tests et de nombreuses autres fonctions utiles.
  • UV: Le projet expérimental UV est écrit par les mêmes personnes qui réalisent le ruff Outil de peluchage Python. Il vise à remplacer pip, venv, et plusieurs autres outils Python en ligne de commande à la fois. C'est écrit en Rust pour la vitesse (comme ruff), et beaucoup de ses commandes ressemblent à celles de pip et d'autres outils qu'il remplace, ce qui le rend relativement facile à apprendre.

Lorsque vous créez de nouveaux projets destinés à être travaillés en équipe ou distribués à d'autres (par exemple, via PyPI), veillez à utiliser le format pyproject.toml moderne pour vos besoins et la configuration du projet, ainsi que la présentation du projet utilisée avec il. Vous pouvez toujours utiliser l'ancien requirements.txt fichier côte à côte avec pyproject.tomlmais ce dernier couvre un plus large éventail de cas d'utilisation et rend vos projets rétrocompatibles.

Nouvelle syntaxe Python

L'évolution de Python a entraîné de nombreux nouveaux ajouts au langage lui-même. Les dernières versions de Python ont ajouté des constructions syntaxiques utiles qui permettent une programmation plus puissante et plus succincte. Bien qu'ils ne soient pas obligatoires, des modules tiers plus récents peuvent les utiliser, il vaut donc la peine de les connaître au moins avec désinvolture.

Trois ajouts récents de syntaxe sont particulièrement remarquables.

Correspondance de motifs

Le plus gros ajout récent, la correspondance de modèles structurels, arrivé dans Python 3.10, est bien plus que simplement «switch/case pour Python » comme cela a parfois été décrit. La correspondance de modèles structurels vous permet de prendre des décisions de flux de contrôle en fonction du contenu ou structure d'objets. Bref, c'est une manière de matcher basée sur les types ou la formes de types (une liste avec un int et un stringpar exemple) plutôt que valeurs.

Le « opérateur de morse »

Ainsi nommé pour son apparence (:=), l'opérateur morse, ajouté dans Python 3.8, introduit des expressions d'affectation, un moyen d'attribuer une valeur à une variable puis d'appliquer un test à la variable en une seule étape. Cela permet d'obtenir un code moins verbeux dans de nombreuses situations courantes, telles que la vérification de la valeur de retour d'une fonction tout en préservant les résultats.

Paramètres de position uniquement

Un ajout récent mineur mais utile à la syntaxe de Python, les paramètres de position uniquement, vous permet d'indiquer quels paramètres de fonction doit être spécifiés comme arguments de position, jamais comme arguments de mot-clé. Cette fonctionnalité est généralement destinée à améliorer la clarté et à faciliter le développement futur d'une base de code, objectifs sur lesquels se concentrent également de nombreuses autres nouvelles fonctionnalités de Python.

Tests Python

Écrire des tests pour une base de code, c'est comme passer la soie dentaire au quotidien : tout le monde convient que c'est une bonne chose, peu d'entre nous le font réellement, et encore moins le font correctement. Les bases de code Python modernes méritent de disposer de suites de tests, et les outils de test actuels rendent la création de suites de tests plus facile que jamais.

Python possède son propre framework de test intégré, unittest. Ce n'est pas mauvais par défaut, mais sa conception et ses comportements sont datés. Le framework Pytest est devenu un substitut courant. C'est plus flexible (vous pouvez déclarer des tests dans n'importe quelle partie de votre code, pas seulement un sous-ensemble) et nécessite d'écrire beaucoup moins de passe-partout. De plus, Pytest propose de nombreux modules complémentaires pour étendre ses fonctionnalités (par exemple, pour tester du code asynchrone).

Un autre complément important aux tests est la couverture du code, qui détermine la quantité de base de code réellement couverte par les tests. Le module Coverage vous couvre pour cela (comme son nom l'indique) et Pytest est même livré avec un plug-in pour l'utiliser.

Copyright © 2024 IDG Communications, Inc.

Leave a Reply

Quitter la version mobile