web-dev-qa-db-fra.com

Python normes de codage / meilleures pratiques

Dans python utilisez-vous généralement PEP 8 - Guide de styles pour Python Code = Code] == en tant que vos normes/directives de codage? Existe-t-il des d'autres normes formalisées que vous préférez?

115
Kozyarchuk

"Dans python utilisez-vous généralement PEP 8 - Guide de styles pour Python en tant que normes/directives 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 docstring

Avec Python Style Guides, je vous suggère de vous référer aux éléments suivants:

  1. Code comme un Pythonista: Python Idiomatique
  2. Erreurs et verrues communes
  3. Comment ne pas écrire Python code
  4. Python gotcha
148
bhadra

Je suis les Idiomes Python et Efficacité , par Rob Knight. Je pense qu'ils sont exactement les mêmes que PEP 8, mais sont plus synthétiques et basés sur des exemples.

Si vous utilisez wxPython, vous pouvez également vouloir vérifier Guide de style pour le code wxPython , de Chris Barker également.

14
Mapad

Je m'en tiens au PEP-8 de très près.

Il y a trois choses spécifiques que je ne voudrais pas être dérangé de changer en PEP-8.

  • Évitez les blancs superflus immédiatement entre parenthèses, crochets ou accolades.

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

    Je le fais quand même: spam( ham[ 1 ], { eggs: 2 } )

    Pourquoi? Plus de 30 ans d'habitude enracinée blottissent () contre des noms de fonctions ou des mots-clés (en C). À partir de Fortran IV dans les années 70.

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

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

    Je le fais quand même: x= x * 2 - 1

    Pourquoi? La science de la programmation de Gries a suggéré cela comme moyen de souligner le lien entre l'assignation et la variable dont l'état est en train d'être modifié.

    Cela ne fonctionne pas bien pour les affectations multiples ou augmentées, pour cela j'utilise beaucoup d'espaces.

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

    Conseillé: en minuscule, avec des mots séparés par des tirets bas si nécessaire pour améliorer la lisibilité.

    Je le fais quand même: camelCase

    Pourquoi? CamelCase est une habitude bien ancrée depuis plus de 20 ans, à commencer par Pascal dans les années 80.

8
S.Lott

Pour ajouter à bhadra'sliste de guides idiomatiques:

Découvrez la présentation d'Anthony Baxter sur Effective Python Programmation (à partir de 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)
5
Ryan Cox

PEP 8 est bon, la seule chose sur laquelle je souhaite qu’il soit plus dur est la guerre sainte Tabs-vs-Spaces.

Fondamentalement, si vous démarrez un projet en python, vous devez choisir des onglets ou des espaces, puis tirer sur tous les délinquants à vue.

5
Ryan

Je le suis extrêmement rigoureusement. Le seul dieu avant PEP-8 est constitué des bases de code existantes.

4
Alex Gaynor

Oui, j'essaie de le suivre aussi étroitement que possible.

Je ne suis aucune autre norme de codage.

2
Oli

Je suis le PEP8, c'est un très bon style de codage.

1
forhappy