Python >> Tutoriel Python >  >> Python

Meilleures pratiques de codage Python et directives de style

Vous avez passé des heures à étudier Python, et vous avez peut-être même plusieurs projets réussis dans votre portefeuille. Mais écrivez-vous votre code Python comme un pro ? Passons en revue quelques directives importantes pour vous aider à nettoyer votre code.

Qu'est-ce que Pythonic Façon d'écrire du code ?

Il existe souvent plusieurs façons de faire quelque chose en Python; naturellement, certains sont meilleurs que d'autres. Mais vous devriez toujours préférer un code non seulement syntaxiquement correct, mais également conforme aux meilleures pratiques de codage et à la manière dont le langage doit être utilisé.

Écrire du code dans un Pythonic implique de suivre le guide de style officiel pour le code Python ainsi que de choisir l'option la plus efficace en termes de simplicité et de lisibilité du code.

Bien sûr, lire toutes les directives de style pourrait être ennuyeux. Donc, pour vous faciliter la vie, je souhaite partager avec vous les idées principales et les règles les plus importantes du guide dans un format un peu plus engageant et concis. Cela ne signifie pas que vous ne devriez pas lire le guide, mais cet article facilitera au moins votre travail.

Comment structurer le code Python

Indentation

Vous devez utiliser quatre espaces par niveau d'indentation. Les espaces, et non les tabulations, sont la méthode d'indentation préférée en Python. De plus, Python 3 ne vous permet pas de mélanger les espaces et les tabulations pour l'indentation. (Remarque :"Espaces contre tabulations" est un peu une guerre sainte controversée dans les cercles de programmation. Bien que le guide de style Python officiel préfère les espaces, d'autres guides de style peuvent spécifier des tabulations. Dans tous les cas, la cohérence est essentielle.)

Il existe également plusieurs règles de gestion de l'indentation lorsqu'une seule ligne de code est répartie sur plusieurs lignes. Les lignes de continuation doivent aligner les éléments enveloppés (comme les éléments d'une liste d'arguments) soit verticalement, soit en utilisant un retrait négatif. Voir quelques exemples ci-dessous :

Bonne pratique

# Vertical alignment
congrats = joining_four_strings_and_repeating_three_times('Happy', 
                                                          'New', 
                                                          'Year',
                                                          '!')
																													
																												
# Hanging indent
congrats = joining_four_strings_and_repeating_three_times(
    'Happy', 'New', 
    'Year','!')

Mauvaise pratique

# Bad practice since no arguments are allowed in the first line when using hanging indent.
congrats = joining_four_strings_and_repeating_three_times('Happy', 
    'New','Year','!')
print (congrats)

Longueur de ligne maximale

Dans le code Python, la longueur d'une ligne doit être limitée à 79 caractères au maximum. Les docstrings et les commentaires ont une limite encore plus courte et ne doivent pas dépasser 72 caractères. Ce sont les exigences de la bibliothèque standard Python. Toutefois, si certaines équipes préfèrent fortement une longueur de ligne plus longue, elles peuvent augmenter la longueur maximale à 99 caractères, tout en conservant les docstrings et les commentaires à moins de 72 caractères.

(Remarque :la longueur des lignes n'a pas d'impact sur les performances de votre code. C'est simplement pour des raisons de lisibilité et de propreté. Celles-ci ont également été arbitrairement spécifiées par le guide de style officiel pour des raisons de cohérence, car de nombreuses personnes ont des préférences différentes.)

Sauts de ligne

Les longues lignes peuvent être réparties sur plusieurs lignes en enveloppant les expressions entre parenthèses et en utilisant la continuation de ligne implicite de Python entre parenthèses. Les barres obliques inverses peuvent également être acceptables pour séparer les lignes, mais uniquement dans les cas où la continuation implicite ne peut pas être appliquée (par exemple, si vous écrivez plusieurs instructions long with).

Pour les formules, la meilleure pratique consiste à couper les lignes avant les opérateurs binaires, car cela se traduit généralement par un code plus lisible. Cependant, il est également permis de couper une ligne après un opérateur binaire si cela correspond à votre convention locale.

Bonne pratique

# Line breaks before binary operators
GDP = (private_consumption 
       + gross_investment 
       + government_investment 
       + government_spending 
       + (exports - imports))

Mauvaise pratique

# Line breaks after binary operators
GDP = (private_consumption + 
       gross_investment + 
       government_investment + 
       government_spending + 
       (exports - imports))

Lignes vides

Il est recommandé d'entourer les définitions de fonction et de classe de niveau supérieur de deux lignes vides et les définitions de méthode avec une ligne vide . Vous pouvez également utiliser des lignes vierges supplémentaires pour séparer des groupes de fonctions associées ou pour indiquer des sections logiques au sein d'une fonction.

Importations

Tout code Python doit commencer par importer les bibliothèques et classes nécessaires. Il est recommandé de placer les importations de différentes bibliothèques sur des lignes distinctes. Cependant, il est possible d'importer plusieurs classes du même module sur une seule ligne.

Bonne pratique

# Importing different libraries in different lines
import numpy
import pandas

# Importing different classes from the same module
from sklearn.metrics import confusion_matrix, classification_report

Mauvaise pratique

# Importing different libraries in one line
import numpy, pandas

Comment commenter du code Python comme un pro

Les commentaires sont au cœur des bonnes pratiques de codage. Il est très important de bien documenter votre code Python et de tenir à jour tous les commentaires lorsque le code change.

Les commentaires doivent être des phrases complètes, de préférence rédigées en anglais.

Il existe trois types de commentaires :

  • Bloquer les commentaires s'appliquent au code qui les suit. Ces commentaires consistent généralement en un ou plusieurs paragraphes. Toutes les lignes de commentaire de bloc doivent commencer par un # et un seul espace. Il est recommandé de séparer les paragraphes à l'intérieur d'un commentaire de bloc par une ligne contenant un seul #.
  • Commentaires intégrés sont des commentaires sur la même ligne qu'une instruction. Ce type de commentaire doit être utilisé avec parcimonie et uniquement pour des explications réellement utiles. Sinon, votre code deviendra désordonné. Ces commentaires doivent être séparés par au moins deux espaces de la déclaration et commencer par un # suivi d'un seul espace.
  • Chaînes de documentation (ou docstrings) viennent au début des modules, fonctions, classes et méthodes. Une docstring est entourée de """triple double guillemets""". Contrairement aux commentaires habituels, une docstring ne sert pas de description mais de commande, par exemple, "Former un nombre complexe" ou "Renvoyer une seule chaîne".

Conventions de dénomination Python

Le code Python accepte différents styles de dénomination, mais il existe des styles recommandés que vous devez suivre pour certains objets.

Commençons d'abord par les styles de nommage Python. Ceux-ci incluent :

  • b (lettre minuscule unique)
  • B (une seule lettre majuscule)
  • lowercase et lowercase_with_underscores
  • UPPERCASE et UPPERCASE_WITH_UNDERSCORES
  • CapitalizedWords et Capitalized_Words_With_Underscores
  • mixedCase (également connu sous le nom de cas de chameau)

Il est maintenant temps de passer aux instructions d'utilisation de ces styles de dénomination dans des situations spécifiques et pour des objets particuliers :

  • Utilisez lowercase ou lowercase_with_underscores (si nécessaire pour une meilleure lisibilité) pour les noms de fonctions ainsi que les noms de variables. Un nom de fonction doit transmettre ce qu'elle fait.
  • N'utilisez pas une seule lettre minuscule "l" (el), une lettre majuscule "I" (oeil) ou une lettre majuscule "O" comme nom de variable. Dans certaines polices, ces caractères ne peuvent pas être distingués des nombres comme '1' et '0'.
  • Ne nommez pas vos variables comme "x" ou "y". Utilisez plutôt des noms descriptifs (par exemple, fertility_rate_1990 , gdp_1990 ).
  • Essayez d'éviter d'utiliser des noms trop longs, surtout si certaines parties du nom n'améliorent pas votre compréhension du code. Par exemple, utilisez actor_names au lieu de list_of_actor_names .
  • Les constantes doivent être nommées après UPPERCASE ou UPPERCASE_WITH_UNDERSCORES conventions de nommage. Il devrait être clair que la variable est constante rien qu'en la regardant.

Parfois, il n'est tout simplement pas possible de suivre toutes les conventions de nommage car une partie de votre base de code existante suit des conventions différentes, ou il existe d'autres conventions adoptées localement auxquelles vous adhérez. Dans tous les cas, rappelez-vous que la cohérence au sein de votre projet est plus importante que le respect d'un guide de style particulier.

Récapitulation

Les programmeurs professionnels évitent d'écrire du code complexe, car plus de complexité implique plus de bogues. Vous voulez écrire du code de la manière la plus simple possible pour vous assurer qu'il peut être facilement compris par vous-même et par un autre programmeur. En fait, Python a été créé pour être clair et compréhensible. C'est pourquoi un bon code Python qui suit certaines de ces conventions se lit presque comme l'anglais !

Vous êtes maintenant familiarisé avec les directives de style de base pour le code Python, mais il y en a beaucoup d'autres à discuter. Découvrez d'autres bonnes pratiques pour écrire du code Python de manière professionnelle avec nos cours :Principes de base de Python (Partie 1, Partie 2, Partie 3) et Introduction à Python pour la science des données.