5.3. Bonnes et mauvaises pratiques

5.3.1. Imports

Il est fortement déconseillé d’utiliser l’instruction form module import *, car cela surcharge l’espace de noms global et peut conduire à des conflits. Observons le code suivant :

>>> from math import *
>>> cos(1)
0.54030230586813977
>>> from cmath import *
>>> cos(1)
(0.54030230586813977-0j)

L’on remarque que la fonction cos() du module cmath remplace celle du module math.

La seule exception notable à cette pratique est lorsque l’on utilise Python en mode interactif (par exemple en important tout le module math pour se servir du terminal comme d’une calculatrice).

5.3.2. Exceptions

Lorsqu’une erreur est interceptée, il est vital de spécifier après l’instruction except quelle erreur est attendue. Le cas échéant, toutes les erreurs levées seront interceptées, et cela pourra cacher certains problèmes au programmeur, et rendre le débugage très difficile. Par exemple :

try:
    foo = opne('file')
except:
    sys.exit('could not open file')

Ce code interceptera toutes les erreurs, même celle indiquant que la fonctionopn opne() n’existe pas, et le programmeur sera dans l’incapacité de comprendre où est le problème. Au contraire, le code suivant lui permettra de rapidement trouver l’erreur :

try:
    foo = opne('file')
except IOError:
    sys.exit('could not open file')

5.3.3. Utilisation des backslash

Comme il a été vu au début, un backslash permet d’écrire une expression ou une instruction sur plusieurs lignes. Toutefois, il peut être plus simple d’utiliser des parenthèses afin d’améliorer la lecture.

Les deux expressions suivantes sont équivalentes :

value = foo.bar()['first'][0]*baz.quux(1, 2)[5:9] \
    + calculate_number(10, 20)*forbulate(500, 360)

value = (foo.bar()['first'][0]*baz.quux(1, 2)[5:9]
    + calculate_number(10, 20)*forbulate(500, 360))

5.3.4. Conventions et style

Voici une liste (non exhaustive) des conventions communément adoptées :

  • utiliser quatre espaces par niveau d’indentation, et surtout pas de tabulations :
  • couper chaque ligne à 79 caractères [1] ;
  • insérer une ligne vierge entre les définitions de fonctions et, classes, ainsi qu’entre les grandes articulations du code ;
  • utiliser des docstrings ;
  • mettre un espace de chaque côté des opérateurs, après une virgule ou deux points (mais pas avant), enfin, ne pas mettre d’espace après un signe ouvrant ou avant un signe fermant (c’est à dire (), {}, []) ;
  • nommer les classes en CamelCase, les fonctions, méthodes et variables en lower_case.

Voir aussi

PEP 8
Style Guide for Python Code

Footnotes

[1]Ceci pour faciliter la lecture du code et pour qu’il soit adapté à toutes les résolutions

Table des matières

Sujet précédent

5.2. Évolutions

Sujet suivant

5.4. Éditeurs

Cette page