Question

Je suis assez nouveau pour Python, et je veux développer mon premier projet sérieux open source. Je veux demander quel est le style de codage commun pour les projets de python. Je vais mettre aussi ce que je fais en ce moment.

Quelle est la 1.- le plus largement utilisé la largeur de colonne? (La question éternelle)
Je reste actuellement à 80 colonnes (et c'est une douleur!)

Qu'est-ce que cite 2.- à utiliser? (Je l'ai vu tout et PEP 8 ne mentionne rien clair)
J'utilise des guillemets simples pour tout, mais docstrings, qui utilisent triples guillemets doubles.

Où puis-je 3.- mis mes importations?
Je les mettre à en-tête de fichier dans cet ordre.

import sys
import -rest of python modules needed-

import whatever
import -rest of application modules-

<code here>

4.- Puis-je utiliser "whatever.function import comme bla"?
J'ai vu des documents que le mépris faire.

5.- des onglets ou des espaces pour indenter
Actuellement en utilisant 4 onglets espaces.

6.- style de nommage variable? J'utilise minuscules pour tout, mais les classes, que je mets en camelCase.

Tout ce que vous recommanderiez?

Était-ce utile?

La solution

PEP 8 est à peu près "la racine" de tous style commun guides.

guide de style Python a certaines parties qui sont assez bien pensé de, mais d'autres sont idiosyncrasiques (les deux tirets espace au lieu des quatre-espace populaires et le style CamelCase pour les fonctions et méthodes au lieu du style camel_case, sont assez grandes idiosyncrasies).

à vos questions spécifiques:

  

Quelle est la 1.- le plus largement utilisé la largeur de colonne? (La question éternelle)   Je reste actuellement à 80 colonnes   (Et c'est une douleur!)

est le plus populaire 80 colonnes

  

Qu'est-ce que cite 2.- à utiliser? (Je l'ai vu tout et PEP 8 ne mentionne pas   quoi que ce soit clair) J'utilise seul   citations pour tout sauf docstrings,   qui utilisent triples guillemets doubles.

Je préfère le style que vous utilisez, mais même Google n'a pas pu parvenir à un consensus à ce sujet: - (

  

Où puis-je 3.- mets mes importations? Je les mettre à en-tête de fichier dans ce   ordre.

     

import sys importer -Reste python   modules nécessaires -

     

import quel que soit l'importation -Reste   modules d'application -

     

Oui, excellent choix, et populaire aussi.

  

4.- Puis-je utiliser « whatever.function d'importation comme bla »? J'ai vu quelques-uns   documents que le mépris faire.

Je recommande fortement que vous avez toujours modules d'importation - noms non spécifiques de l'intérieur d'un module. Ce n'est pas le style - il y a des avantages forts par exemple en testabilité en faisant cela. La clause de as est bien, de raccourcir le nom d'un module ou d'éviter des affrontements.

  

5.- des onglets ou des espaces pour indenter? Actuellement en utilisant 4 onglets espaces.

La très grande majorité la plus populaire.

  

6.- style de nommage variable? J'utilise minuscules pour tout, mais les classes,   que je mets en camelCase.

Presque tout le monde des noms des classes avec initiales et constantes en majuscules avec tout en majuscules.

Autres conseils

La plupart 1.- tout le monde a 16: 9 ou 16h10 moniteur de nos jours. Même si elles ne disposent pas d'un grand écran ils ont beaucoup de pixels, 80 Col. est pas un grand facteur de rupture pratique comme il était quand tout le monde a été piraté à la ligne de commande dans une fenêtre de terminal à distance sur un écran 4: 3 à 320 X 240. Je termine habituellement la ligne quand elle est trop longue, ce qui est subjectif. Je suis à 2048 X 1152 sur un 23" Moniteur X 2.

2.- Les guillemets simples par défaut de sorte que vous n'avez pas échapper les guillemets doubles, guillemets doubles lorsque vous devez intégrer des guillemets simples et triples guillemets pour les chaînes avec sauts de lignes.

3.- Mettez au sommet du fichier, parfois vous les mettez dans la fonction principale si elles ne sont pas nécessaires à l'échelle mondiale au module.

4.- Il est un idiome commun de renommer certains modules. Un bon exemple est le suivant.

try:
    # for Python 2.6.x
    import json
except ImportError:
    # for previous Pythons
    try:
        import simplejson as json
    except ImportError:
        sys.exit('easy_install simplejson')

mais la meilleure façon d'importer juste une classe ou fonction est from module import xxx avec l'option as yyy si nécessaire

5.- Utilisez toujours ESPACES! 2 ou 4 pour autant qu'aucun TABS

6.- Les classes doivent en UpperCaseCamelStyle, les variables sont en minuscules parfois lowerCamelCase ou parfois all_lowecase_separated_by_underscores, comme les noms de fonctions. "Constantes" devrait être ALL_UPPER_CASE_SEPARATED_BY_UNDERSCORES

En cas de doute se référer à la PEP 8 , la source Python , les conventions existantes dans une base de code. Mais la chose la plus à l'importation doit être cohérentes que possible. Tout le code Python devrait ressembler il a été écrit par la même personne chaque fois que possible.

Depuis que je suis vraiment fou de « style » je vais écrire les lignes directrices que j'utilise actuellement dans un projet près 8k SLOC avec environ 35 fichiers, la plupart d'entre elle correspond pep8.

  1. pep8 dit 79 (WTF?), Je pars avec 80 et je suis habitué maintenant. Moins le mouvement des yeux après tout!

  2. docstrings et des trucs qui couvre plusieurs lignes dans '' ». Tout le reste ''. Aussi je n'aime pas entre guillemets, je n'utiliser que des guillemets simples tout le temps ... suppose que ce parce que je suis venu former le coin JavaScript, où il est juste plus facile d'utiliser trop « », parce que de cette façon vous ne pas échapper à tous les choses HTML: O

  3. A la tête, intégré avant le code d'application personnalisée. Mais je vais aussi avec un « échec précoce » approche, donc s'il y a quelque chose qui est la version dépendait (GTK par exemple) j'importer cette première.

  4. Cela dépend, la plupart du temps je vais avec foo d'importation et d'importation foo, mais il y a un certain cas (le nom est déjà défini par une autre importation) si je l'utilise de la barre d'importation foo comme bla aussi.

  5. 4 espaces. Période. Si vous voulez vraiment utiliser les onglets, assurez-vous de les convertir en espaces avant de vous engager en travaillant avec SCM. Mais jamais (!) MIX !!! ESPACES ET PATTES Il peut et va présenter des bugs horribles.

  6. some_method ou foo_function, une constante, MyClass.

Vous pouvez également discuter indentation dans les cas où un appel de méthode ou quelque chose couvrir plusieurs lignes, et vous pouvez argumenter sur quel style continuation de ligne vous utiliserez. Soit entourent tout avec () ou faire le \ à la fin de la ligne thingy. Je fais ce dernier, et je place aussi les opérateurs et d'autres choses au début de la ligne suivante.

# always insert a newline after a wrapped one
from bla import foo, test, goo, \
                another_thing

def some_method_thats_too_long_for_80_columns(foo_argument, bar_argument, bla_argument,
                                              baz_argument):

    do_something(test, bla, baz)

    value = 123 * foo + ten \
            - bla

    if test > 20 \
       and x < 4:

        test_something()

    elif foo > 7 \
         and bla == 2 \
         or me == blaaaaaa:

        test_the_megamoth()

J'ai aussi des lignes directrices pour les opérations de comparaison, j'utilise toujours is(not) pour vérifier contre None True False et je ne fais jamais une comparaison booléenne implicite comme if foo:, je fais toujours if foo is True:, typage dynamique est agréable mais dans certains cas, je veux juste être sûr que la chose fait la bonne chose!

Une autre chose que je fais est de ne jamais utiliser des chaînes vides! Ils sont dans un fichier de constantes, dans le reste du code que j'ai des trucs comme username == UNSET_USERNAME ou label = UNSET_LABEL il est de cette façon un peu plus descriptif!

J'ai aussi quelques directives strictes et d'autres trucs blancs fou, mais je l'aime (parce que je suis fou à ce sujet), j'ai même écrit un script qui vérifie mon code:
http://github.com/BonsaiDen/Atarashii/blob/master/checkstyle

AVERTISSEMENT (!): Ça va faire mal vos sentiments! Plus encore que JSLint ne ...

Mais c'est juste mes 2 cents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top