116 votes

Normes et meilleures pratiques de codage en Python

En python, utilisez-vous généralement PEP 8 -- Guide de style pour le code Python comme vos normes/directives de codage ? Y a-t-il d'autres normes formalisées que vous préférez ?

149voto

bhadra Points 7255

"En Python, utilisez-vous généralement le PEP 8 (Style Guide for Python Code) comme normes de codage ? Y a-t-il d'autres normes formalisées que vous préférez ?"

Comme vous l'avez mentionné, suivez PEP 8 pour le texte principal, et PEP 257 pour les conventions de docstring

Outre les guides de style Python, je vous suggère de consulter les documents suivants :

  1. Codez comme un pythoniste : Python idiomatique
  2. Erreurs courantes et verrues
  3. Comment ne pas écrire de code Python
  4. L'erreur de Python

14voto

Mapad Points 3033

Je suis le Idiomes et efficacité en Python lignes directrices, par Rob Knight. Je pense qu'elles sont exactement les mêmes que celles du PEP 8, mais qu'elles sont plus synthétiques et basées sur des exemples.

Si vous utilisez wxPython, vous pouvez également consulter le site suivant Guide de style pour le code wxPython de Chris Barker.

8voto

S.Lott Points 207588

Je respecte scrupuleusement le PEP-8.

Il y a trois choses spécifiques que je ne peux pas prendre la peine de changer pour PEP-8.

  • Évitez les espaces blancs superflus à l'intérieur des parenthèses, des crochets ou des accolades.

    Suggéré : spam(ham[1], {eggs: 2})

    C'est ce que je fais de toute façon : spam( ham[ 1 ], { eggs: 2 } )

    Pourquoi ? Plus de 30 ans d'habitudes bien ancrées font que les () sont collés contre les noms de fonctions ou (en C) les mots-clés des déclarations. Cela a commencé avec Fortran IV dans les années 70.

  • Utiliser des espaces autour des opérateurs arithmétiques :

    Suggéré : x = x * 2 - 1

    C'est ce que je fais de toute façon : x= x * 2 - 1

    Pourquoi ? L'ouvrage de Gries intitulé The Science of Programming (La science de la programmation) propose cette solution pour mettre en évidence le lien entre l'affectation et la variable dont l'état est modifié.

    Il ne fonctionne pas bien pour l'assignation multiple ou l'assignation augmentée, pour lesquelles j'utilise beaucoup d'espaces.

  • Pour les noms de fonctions, de méthodes et de variables d'instance

    Suggestion : minuscules, les mots étant séparés par des traits de soulignement si nécessaire pour améliorer la lisibilité.

    Je le fais de toute façon : camelCase

    Pourquoi ? Plus de 20 ans d'habitude de camelCase, depuis Pascal dans les années 80.

5voto

Ryan Points 7035

PEP 8 est une bonne chose, la seule chose sur laquelle j'aurais aimé qu'il soit plus sévère est la guerre sainte entre les onglets et les espaces.

En gros, si vous démarrez un projet en python, vous devez choisir Tabs ou Spaces et tirer à vue sur tous les délinquants.

5voto

Ryan Cox Points 3397

A ajouter à de bhadra liste de guides idiomatiques :

Consultez la présentation d'Anthony Baxter sur Programmation efficace en Python (d'après OSON 2005).

Un extrait :

# dict's setdefault method turns this:
if key in dictobj:
    dictobj[key].append(val)
else:
    dictobj[key] = [val]
# into this:
dictobj.setdefault(key,[]).append(val)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X