cours
6 Meilleures pratiques Python pour un meilleur code
Le codage est l'art d'écrire les instructions - également appelées algorithmes - permettant à un ordinateur d'effectuer une tâche spécifique. Pour communiquer avec les ordinateurs, les développeurs utilisent des langages de programmation.
Comme les langues naturelles, telles que l'anglais, le russe ou le quechua, les langages de programmation comprennent un ensemble spécifique de règles syntaxiques et sémantiques qui fournissent les bases de la communication. Bien que les langues naturelles soient plus complexes, plus souples et plus dynamiques, ces attributs s'appliquent également aux langages de programmation dans une mesure plus limitée.
Même l'algorithme le plus simple peut être écrit de différentes manières. Bien qu'une certaine flexibilité soit souhaitable lors du développement du code, elle peut compromettre l'efficacité et la communication, en particulier lorsque plusieurs personnes travaillent sur le code.
La lisibilité est donc un aspect essentiel de l'écriture du code. Pour s'assurer que les développeurs sont sur la même longueur d'onde, la plupart des langages de programmation ont développé des normes de codage. Ces documents fournissent des lignes directrices et des bonnes pratiques pour produire un code lisible, maintenable et évolutif.
Dans cet article, nous allons découvrir les meilleures pratiques pour coder en Python, l'un des langages de science des données les plus populaires. Les pratiques présentées dans les sections suivantes sont principalement basées sur la PEP 8, le guide standard pour l'écriture de code en Python.
Consultez notre article ou notre cours d'introduction à Python pour en savoir plus sur l'utilisation de Python.
Qu'est-ce que PEP 8 ?
"Le code est lu beaucoup plus souvent qu'il n'est écrit. Le code doit toujours être écrit de manière à favoriser la lisibilité" - Guido van Rossum, l'inventeur de Python
La PEP 8 est un guide de style pour le code Python. Rédigé en 2001 par Guido van Rossum, Barry Warsaw et Nick Coghlan, il fournit un ensemble de recommandations pour l'écriture d'un code plus lisible et plus cohérent. Il couvre tous les aspects, de la manière de nommer les variables au nombre maximum de caractères qu'une ligne doit contenir.
PEP est l'acronyme de Python Enhancement Proposal (proposition d'amélioration de Python). Une PEP est un document qui décrit les nouvelles fonctionnalités proposées pour Python et documente certains aspects de Python, comme la conception et le style.
Bien que cela ne soit pas obligatoire, une grande partie de la communauté Python utilise la PEP 8. Il est donc fortement conseillé de suivre les lignes directrices. Ce faisant, vous améliorerez vos références en tant que programmeur professionnel.
Malgré la large acceptation du PEP 8, les lignes directrices peuvent ne pas s'adapter à tous les scénarios particuliers. Dans ce cas, les entreprises définissent souvent leurs propres conventions.
Apprenez Python à partir de zéro
Meilleures pratiques Python
1. Meilleures pratiques Python pour la qualité du code
La rédaction d'un code lisible et organisé peut faire la différence et améliorer vos perspectives de carrière. Si le codage peut sembler un processus mécanique et complexe pour les débutants, la vérité est que le codage est un art.
Il existe de nombreuses astuces que vous pouvez suivre pour améliorer la qualité du code en Python. Voici une liste de quelques-unes des plus pertinentes.
La tyrannie de l'indentation
L'indentation désigne les espaces au début d'une ligne de code. Alors que l'indentation dans d'autres langages de programmation n'est qu'une ressource pour la lisibilité, l'indentation en Python est obligatoire. Python utilise l'indentation pour ouvrir un bloc de code. Plus précisément, 4 espaces consécutifs par niveau d'indentation, comme le montre le code suivant :
for number in [1,2,3,4]:
if number % 2 == 0:
print(number)
else:
continue
Longueur maximale de la ligne
Le PEP 8 recommande qu'aucune ligne ne dépasse 79 caractères. C'est logique, car les lignes plus courtes sont plus faciles à lire. De plus, cette longueur vous permet d'avoir plusieurs fichiers ouverts les uns à côté des autres.
Lignes vierges
Entourez les définitions de fonctions et de classes de premier niveau de deux lignes vierges. Les définitions de méthodes à l'intérieur d'une classe sont entourées d'une seule ligne vide. Des lignes vierges supplémentaires peuvent être utilisées (avec parcimonie) pour séparer des groupes de fonctions apparentées. Enfin, utilisez des lignes blanches dans les fonctions (avec parcimonie) pour indiquer les sections logiques.
Utiliser des linters et des autoformateurs
La maîtrise du code prend du temps. Faire attention à tous les détails lors du codage peut s'avérer difficile et prendre du temps. Heureusement, les machines, en particulier les linters et les formateurs, peuvent nous aider à garantir la qualité du code.
Les linters effectuent une analyse statique des codes sources et vérifient les divergences sémantiques. Les formateurs sont des outils similaires qui tentent de restructurer l'espacement de votre code, la longueur des lignes, le positionnement des arguments, etc. afin de garantir la cohérence de votre code dans différents fichiers ou projets. Python vous offre une pléthore de linters et de formateurs parmi lesquels choisir.
Gardez à l'esprit les principes
Si certaines des règles susmentionnées sont simples, le codage est souvent une question de bon goût et d'intuition. Pour devenir un artiste du codage, vous devez connaître certains des principes qui sous-tendent Python. Un excellent exemple de ces principes est le Zen of Python, abordé dans un article distinct.
2. Meilleures pratiques de journalisation en Python
Le cursus est un moyen de suivre les événements qui se produisent lors de l'exécution d'un logiciel. En particulier lorsque les applications gagnent en taille et en complexité, la journalisation devient une technique essentielle pour le développement, le débogage, l'exécution et le cursus.
Le module dejournalisation fait partie de la bibliothèque standard de Python depuis la version 2.3 pour traiter les pratiques de journalisation. Il s'agit du premier paquetage de référence pour la plupart des développeurs Python en ce qui concerne la journalisation et est décrit en détail dans la PEP 282.
L'enregistrement est similaire à une fonction d'impression. Cependant, une fonction d'impression manque de nombreuses informations qui pourraient être utiles à un développeur. La journalisation, en revanche, permet d'enregistrer l'heure et le numéro de ligne auxquels l'erreur s'est produite. Il peut également enregistrer les erreurs ou toute autre information dans des fichiers, des sockets, etc.
Pour importer le module, il vous suffit d'exécuter ce code :
import logging
Tous les messages ne se ressemblent pas. En effet, le module fournit une catégorie de niveaux de journalisation en fonction de la gravité du message. Elle se présente comme suit :
- NOTSET (0): Cela signifie que tous les messages seront enregistrés.
- Debug (10): Utile pour diagnostiquer les problèmes dans le code.
- Info (20): Il peut être utilisé pour reconnaître qu'il n'y a pas de bogues dans le code. Un bon cas d'utilisation de la journalisation au niveau des informations est le cursus de la progression de l'entraînement d'un modèle d'apprentissage automatique.
- Avertissement (30): Indique un problème qui pourrait survenir à l'avenir. Par exemple, un avertissement peut être émis pour un module qui risque d'être supprimé à l'avenir ou un avertissement pour un faible nombre de béliers.
- Erreur (40): Un bogue sérieux dans le code ; il peut s'agir d'une erreur de syntaxe, d'une erreur de mémoire insuffisante ou d'exceptions.
- Critique (50): Une erreur à cause de laquelle le programme peut s'arrêter de fonctionner ou se terminer brusquement.
import logging
logging.info('This message is just informative')
logging.debug('My missions is to provide information about debugging.')
logging.critical("A Critical Logging Message")
Cela dit, vous trouverez ci-dessous une liste de six bonnes pratiques pour gérer la journalisation en Python.
Utilisez des journaux au lieu d'impressions
Nous avons dit précédemment que les journaux fournissent des informations dans la même veine que les fonctions d'impression. Cependant, les journaux sont beaucoup plus puissants et peuvent fournir des informations plus granulaires.
Il peut être tentant d'utiliser la fonction d'impression, surtout si vous n'êtes pas familiarisé avec les routines d'enregistrement, mais l'enregistrement est toujours l'option la plus sûre. Ils sont mieux adaptés à la mise à l'échelle et à la gestion d'applications complexes.
Le web regorge de guides et de documentation. Par exemple, ce tutoriel sur la journalisation de DataCamp est peut-être ce qu'il vous faut pour commencer.
Utilisez le module de journalisation
Ce module est l'option de choix pour la plupart des développeurs Python. Cela signifie que le module est bien entretenu et soutenu par une vaste communauté qui aura toujours une réponse à vos doutes.
Choisissez judicieusement le niveau de journalisation
Le module de journalisation propose six niveaux de messages différents. Chacun d'entre eux est conçu dans un but précis. Plus vous les respectez, plus il vous sera facile, à vous et aux utilisateurs, de comprendre ce qui se passe dans votre code.
Utiliser les horodatages lors de l'enregistrement
Il s'agit d'une caractéristique essentielle des journaux que les fonctions d'impression ne possèdent pas. En plus de savoir où un problème est apparu, il est important de savoir quand il s'est produit. Les horodatages sont vos meilleurs alliés dans ces situations. Veillez à utiliser le format standard pour écrire les horodatages, c'est-à-dire le format ISO-8601.
Vider la corbeille à papier
Utilisez les classes RotatingFileHandler
, telles que TimedRotatingFileHandler
, au lieu de FileHandler
, pour archiver, compresser ou supprimer les anciens fichiers journaux afin d'éviter les problèmes d'espace mémoire. Ces classes nettoient l'espace une fois qu'une limite de taille ou une condition de temps est déclenchée.
3. Meilleures pratiques en matière de commentaires en Python
Les commentaires sont très importants pour faire des annotations à l'intention des futurs lecteurs de notre code. Bien qu'il soit difficile de définir comment le code doit être commenté, il existe certaines lignes directrices que nous pouvons suivre :
- Tout commentaire qui contredit le code est pire que l'absence de commentaire. C'est pourquoi il est très important de mettre à jour le code et les commentaires pour éviter de créer des incohérences.
- Les commentaires doivent être des phrases complètes, avec la première lettre en majuscule.
- Essayez de rédiger vos commentaires en anglais. Bien que chacun soit libre de rédiger ses commentaires dans la langue qu'il juge appropriée, il est recommandé de le faire en anglais.
- Veillez à ce que vos commentaires soient clairs et facilement compréhensibles pour les autres locuteurs de la langue dans laquelle vous écrivez.
Il existe deux types de commentaires : les commentaires en bloc et les commentaires en ligne.
Un commentaire de bloc explique le code qui le suit. En règle générale, vous indentez un commentaire de bloc au même niveau que le bloc de code. Chaque ligne d'un commentaire de bloc commence par un # et un espace, comme suit :
# This is a block comment
print('Welcome to DataCamp!")
En revanche, les commentaires en ligne apparaissent au même niveau que le code. Les commentaires en ligne doivent être séparés de l'énoncé par au moins deux espaces. Comme un commentaire en bloc, un commentaire en ligne commence par un signe dièse (#
) et est suivi d'un espace et d'une chaîne de texte.
print ("Have you ever tried Python?") # This is an inline comment
4. Meilleures pratiques en matière de chaînes de documentation Python
Une chaîne de documentation est une chaîne littérale qui apparaît comme première déclaration dans la définition d'un module, d'une fonction, d'une classe ou d'une méthode. En général, vous utilisez une chaîne de documentation pour générer automatiquement la documentation du code. Ainsi, il est possible d'accéder à une chaîne de documents au moment de l'exécution en utilisant l'attribut spécial obj.__doc__
de cet objet.
Pour des raisons de cohérence, les chaînes de documents sont toujours placées entre trois guillemets doubles ("""
).
Il existe deux formes de docstrings : les docstrings d'une ligne et les docstrings de plusieurs lignes. Les jeux de mots sont réservés aux cas les plus évidents. Ils devraient vraiment tenir sur une seule ligne. L'exemple suivant illustre une chaîne de documents d'une ligne dans la fonction multiply()
:
def multiply(x, y):
""" Return the product of two numbers """
result = x * y
return result
En revanche, une chaîne de documentation multi-lignes peut s'étendre sur plusieurs lignes. Une telle docstring doit documenter la fonction du script, la syntaxe de la ligne de commande, les variables d'environnement et les fichiers. Les messages d'utilisation peuvent être relativement élaborés et devraient être suffisants pour permettre à un nouvel utilisateur d'utiliser la commande correctement.
def calculate_salary(hours, price=20):
""" Return the salary according to the hours worked
Arguments:
hours: total hours investe
price: price of each hours worked. Minimum price is 20 dollars
"""
salary = hours * price
return salary
Vous trouverez une explication plus détaillée des chaînes de documents dans la PEP257.
5. Meilleures pratiques en matière de documentation Python
Alors que les commentaires sont importants pour permettre aux autres développeurs avec lesquels vous travaillez de comprendre votre code, la documentation est destinée à aider une communauté d'utilisateurs potentiels à apprendre à utiliser votre logiciel. Il s'agit d'une étape cruciale : quelle que soit la qualité de votre logiciel, si la documentation n'est pas suffisante, ou pire, si elle est absente, les utilisateurs ne l'utiliseront pas.
Inclure un fichier README
est toujours une bonne pratique, surtout si vous travaillez sur un nouveau projet. Ces fichiers constituent normalement le principal point d'entrée pour les lecteurs de votre code et contiennent des informations générales destinées aux utilisateurs et aux responsables du projet.
Bien que concis, le fichier README
doit expliquer l'objectif du projet, l'URL de la source principale du logiciel et les informations de crédit.
De même, vous devez toujours inclure un fichier setup.py
, garantissant que le logiciel ou la bibliothèque a été empaqueté et distribué avec Distulils, la norme de distribution des modules Python.
En outre, si votre logiciel nécessite d'autres dépendances ou paquets pour fonctionner, vous devez inclure un fichier requirements.txt
qui décrit les dépendances nécessaires et leurs versions.
Enfin, vous pouvez ajouter toute autre information que vous jugez pertinente pour les utilisateurs potentiels. Par exemple, c'est une bonne pratique que de fournir des exemples de fonctionnement de votre paquet ou de vos fonctions.
6. Meilleures pratiques en matière d'environnement virtuel Python
Pour assurer l'ordre et la cohérence de vos projets de données, la création d'un environnement virtuel pour chaque projet que vous démarrez est une bonne pratique.
Les environnements virtuels, également appelés virtualenvs, permettent de découpler et d'isoler les versions de Python et des bibliothèques nécessaires à votre projet, ainsi que les versions de pip qui leur sont associées. Cela autorise les utilisateurs finaux à installer et à gérer leur propre ensemble de logiciels et de versions, indépendamment de ceux fournis par le système.
Pour créer virtualenvs, nous devons d'abord installer le paquetage requis, en écrivant la ligne de code suivante dans votre terminal :
pip install virtualenv
Pour créer un nouveau virtualenv, le code suivant fera la magie. Nous appelons le nouveau serveur virtuel "new_venv"
python3 -m venv /path/to/new/virtual/environment/new_venv
Conventions d'appellation Python
L'une des erreurs les plus courantes chez les développeurs Python débutants consiste à mal nommer les variables, les classes, les fonctions, etc. Les conventions d'appellation sont des éléments essentiels pour assurer la lisibilité du code.
La PEP 8 explique la manière standard de nommer les objets en Python. Selon les lignes directrices, les nouveaux modules et paquets (y compris les frameworks tiers) doivent être écrits selon ces normes, mais la cohérence interne est privilégiée lorsqu'une bibliothèque existante a un style différent.
Vous devez éviter d'utiliser des noms trop généraux ou trop mondains. En outre, les identificateurs utilisés dans la bibliothèque standard doivent être compatibles ASCII, comme décrit dans le PEP 3131.
# Bad naming:
data_structure, ríos_españa, dictionary_with_countries_and_capitals
# Good naming:
user_profile, stop_words, global_emissions_df
Vous trouverez ci-dessous une liste des conventions de dénomination des objets les plus courants en Python.
- Paquets et modules
- Les noms des paquets et des modules doivent être en minuscules
- Les traits d'union ne peuvent être utilisés dans le nom du paquet et du module que s'ils améliorent la lisibilité.
- Classes
- Les noms de classe doivent respecter la convention Majuscule-Camel-Case.
- Les classes intégrées de Python, cependant, sont typiquement des mots en minuscules
- Variables d'instance, méthodes et fonctions
- Les noms des variables d'instance doivent être en minuscules
- Utilisez le trait de soulignement pour ajouter de nouveaux mots à des instances de variables.
- Les variables d'instance non publiques doivent commencer par un seul trait de soulignement.
- Constantes
- Les noms des constantes doivent être entièrement en majuscules
- Utilisez le trait de soulignement pour ajouter de nouveaux mots aux constantes
Identifiant |
Convention |
Module |
minuscules |
Classe |
Mots-cap |
Fonctions |
minuscules |
Méthodes |
minuscules |
Variables de type |
Mots-cap |
Constantes |
MAJUSCULES |
Paquet |
minuscules |
Conclusion
La maîtrise des meilleures pratiques de Python est essentielle pour écrire un code propre, efficace et facile à maintenir. En respectant les lignes directrices relatives à la qualité du code, à la journalisation, aux commentaires et à la documentation, et en utilisant des outils tels que les environnements virtuels, vous pouvez vous assurer que vos projets sont plus faciles à gérer, à collaborer et à mettre à l'échelle.
Alors que vous continuez à améliorer vos compétences en Python, envisagez d'explorer des ressources d'apprentissage plus approfondies pour approfondir votre compréhension de Python et de son large éventail d'applications. Si vous êtes à la recherche de conseils structurés, consultez ces ressources :
- Comment apprendre Python : Un guide pour devenir un expert - Ce guide d'expert vous aidera à naviguer dans le processus d'apprentissage, en vous proposant des conseils et des techniques pour maîtriser Python.
- Introduction à Python pour les développeurs - Parfait pour les développeurs qui cherchent à s'initier à Python, ce cours couvre les concepts et les fonctionnalités de base du langage d'une manière pratique et concrète.
- Introduction à la science des données en Python - Une fois que vous êtes à l'aise avec Python, plongez dans la science des données avec ce cours adapté aux débutants. Il couvre les bibliothèques et techniques essentielles pour travailler avec des données en Python.
Obtenez une certification Python
FAQ sur les meilleures pratiques de Python
Pourquoi est-il important de suivre les meilleures pratiques de codage ?
Assurer la lisibilité, la qualité du code et l'évolutivité lors des activités de développement de logiciels.
Qu'est-ce qu'un environnement virtuel ?
Un environnement virtuel est un outil qui sépare les dépendances de différents projets en créant un environnement isolé distinct pour chaque projet.
Qu'est-ce que PEP 8 ?
C'est un document qui fournit des directives standard et des bonnes pratiques sur la façon d'écrire du code Python.
Qu'est-ce que l'indentation ?
L'indentation désigne les espaces au début d'une ligne de code. Python utilise l'indentation pour indiquer un bloc de code.
Qu'est-ce que le Zen de Python ?
Le Zen de Python est un recueil de 19 "principes directeurs" pour l'écriture de programmes informatiques qui influencent la conception du langage de programmation Python.
Qu'est-ce qu'une docstring ?
Une docstring Python est une chaîne de caractères utilisée pour documenter un module, une classe, une fonction ou une méthode Python, afin que les programmeurs puissent comprendre ce qu'il fait sans avoir à lire les détails de l'implémentation.
Combien de types de commentaires sont courants en Python ?
Il existe deux types de commentaires : les commentaires en bloc et les commentaires en ligne.
Je suis analyste de données indépendant et je collabore avec des entreprises et des organisations du monde entier dans le cadre de projets de science des données. Je suis également formateur en science des données avec plus de 2 ans d'expérience. Je rédige régulièrement des articles sur les sciences des données en anglais et en espagnol, dont certains ont été publiés sur des sites web réputés tels que DataCamp, Towards Data Science et Analytics Vidhya En tant que scientifique des données ayant une formation en sciences politiques et en droit, mon objectif est de travailler à l'interaction des politiques publiques, du droit et de la technologie, en tirant parti du pouvoir des idées pour faire avancer des solutions et des récits innovants qui peuvent nous aider à relever des défis urgents, à savoir la crise climatique. Je me considère comme un autodidacte, un apprenant permanent et un fervent partisan de la pluridisciplinarité. Il n'est jamais trop tard pour apprendre de nouvelles choses.
Apprenez-en plus sur Python avec ces cours !
cours
Introduction à la science des données en Python
cours