On oublie souvent qu’un programme sera relu et modifié par un humain : son auteur ou un autre développeur. Adopter un style d’écriture standard facilite cette relecture.
I. Choisir correctement des noms
Syntaxiquement, les noms de variables, de fonctions, de classes, de méthodes, d’attributs peuvent comporter des lettres, des chiffres, des caractères « _ » et ne doivent pas commencer par un chiffre.
Quel que soit le langage, on choisira un nom d’autant plus évocateur qu’il est utilisé dans une grande portion de code.
La PEP 8 (guide de style Python accessible sur https://www.python.org/dev/peps/peps-0008/) ajoute les conventions suivantes :
_ ».
Exemple : crypto.
_ », avec une majuscule au début de chaque mot.
Exemples : class NombrePremier.
_ ».
Exemple : def decomposition_facteurs_premiers(...).
_ ».
Exemple : TOTAL_MAX = 10.
II. Espaces, indentations, lignes blanches
1) Indentation
Les blocs Python sont délimités par l’indentation. La PEP 8 propose d’indenter les blocs à l’aide de 4 espaces (la plupart des éditeurs Python utilisent ce réglage).
Une ligne ne devrait pas excéder 79 caractères (cette règle est parfois transgressée). Lorsqu’une instruction court sur plusieurs lignes, on facilite la lecture en indentant. Exemple tiré de la PEP 8 :
Enfin, on écrit généralement une seule instruction par ligne.
2) Espaces
Les règles suivantes permettent de bien distribuer les espaces :
pas d’espace avant « : » ;
espace après (mais pas avant) les « , » dans les appels ou définitions de fonction ;
espaces autour de « = » (pour l’affectation) et des opérateurs arithmétiques, sauf s’il y en a beaucoup sur la ligne (dans ce cas, ne pas mettre d’espace autour des plus prioritaires) ;
pas d’espace après « ([{ », ni avant « )]} » ;
pas d’espaces autour de « : » dans les slices.
Exemples :
3) Lignes blanches
On laisse deux lignes vides entre les différentes fonctions ou classes à l’intérieur d’un module.
Au sein d’une classe, les méthodes sont séparées par une seule ligne blanche.
III. Outils de validation
Des outils sont souvent intégrés dans les environnements de développement, mais sont aussi disponibles séparément :
pep8 et flake8 permettent de vérifier la conformité avec la PEP 8 (ainsi que d’autres choses).
autopep8 et black peuvent reformater automatiquement le code en suivant ces règles.
Exemple d’infractions relevées par flake8 dans un programme fib.py :