Domanda

Sono abbastanza nuovo a Python, e voglio sviluppare la mia primo serio progetto open source. Vorrei chiedere che cosa è lo stile di codifica comune per i progetti di pitone. Metterò anche quello che sto facendo in questo momento.

1.- Qual è la larghezza della colonna più utilizzato? (L'eterna domanda)
Attualmente sto attaccando a 80 colonne (ed è un dolore!)

2.- Che cita da usare? (Ho visto tutto e PEP 8 non menziona nulla chiaro)
Sto usando le virgolette singole per tutto, ma docstrings, che utilizzano triple virgolette doppie.

3.- Dove metto le mie importazioni?
Li sto mettendo in intestazione del file in questo ordine.

import sys
import -rest of python modules needed-

import whatever
import -rest of application modules-

<code here>

4.- posso usare "import whatever.function come blah"?
Ho visto alcuni documenti che disprezzo facendo questo.

5.- Tabs o spazi per i rientri?
Attualmente utilizzando 4 schede spazi.

6.- variabile stile di denominazione? Sto usando lettere minuscole per tutto, ma le classi, che ho messo in camelCase.

Tutto ciò che ci si consiglia?

È stato utile?

Soluzione

PEP 8 è più o meno "la radice" di tutto lo stile comuni guide.

di Google Python style guide ha alcune parti che sono abbastanza ben pensato di, ma altri sono idiosincratiche (i trattini di due spazi al posto dei popolari quelle quattro-spazio, e lo stile CamelCase per le funzioni e metodi al posto dello stile camel_case, sono abbastanza grandi idiosincrasie).

On alle vostre domande specifiche:

  

1.- Qual è la larghezza della colonna più utilizzato? (L'eterna domanda)   Attualmente sto attaccando a 80 colonne   (Ed è un dolore!)

80 colonne è più popolare

  

2.- Che cita da usare? (Ho visto tutto e PEP 8 non menziona   niente chiara) che sto utilizzando singolo   preventivi per tutto, ma docstrings,   che usare le virgolette triple doppie.

Io preferisco lo stile che si sta utilizzando, ma anche Google non è stato in grado di raggiungere un consenso su questo: - (

  

3.- Dove metto le mie importazioni? Li sto mettendo in intestazione del file in questo   ordine.

     

import sys import rest di pitone   moduli necessari -

     

importazione qualunque importazione di rest   moduli applicativi -

     

Sì, scelta eccellente, e popolare anche.

  

4.- uso Can I "importazione whatever.function come blah"? Ho visto un po '   i documenti che disprezzo fare questo.

vi consigliamo caldamente di sempre i moduli di importazione - nomi non specifici da all'interno di un modulo. Questo non è solo stile - ci sono vantaggi forti per esempio in testability a farlo. La clausola as va bene, per accorciare nome o evitare scontri di un modulo.

  

5.- Spartiti o spazi per il rientro? Attualmente utilizzando 4 schede spazi.

La stragrande maggioranza più popolari.

  

6.- variabile stile di denominazione? Sto usando lettere minuscole per tutto, ma le classi,   che ho messo in camelCase.

Quasi nomi vacanza classi con maiuscole iniziali e costanti con tutto maiuscolo.

Altri suggerimenti

1.- La maggior parte ognuno ha un formato 16: 9 o 16:10 monitor di oggi giorno. Anche se non hanno un ampio schermo hanno un sacco di pixel, 80 Cols non è un grosso interruttore pratico affare come lo era quando tutti era hacking dalla riga di comando in una finestra di terminale remoto su un monitor 4: 3 a 320 X 240. io di solito finiscono la linea quando diventa troppo lunga, che è soggettivo. Sono a 2048 X 1152 su un 23" monitor X 2.

2.- I singoli apici per impostazione predefinita in modo che non c'è bisogno di fuggire i doppi apici, doppi apici quando è necessario incorporare le virgolette singole e triple virgolette per stringhe con a capo incorporati.

3.- Metterli nella parte superiore del file, a volte li si mette in la funzione principale, se non sono necessari a livello globale per il modulo.

4.- Si tratta di un idioma comune per rinominare alcuni moduli. Un esempio di buona è la seguente.

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')

, ma il modo migliore per importare solo una classe o funzione è from module import xxx con la as yyy opzionale, se necessario

5.- Sempre utilizzare spazi! 2 o 4 finché non COMPRESSE

6.- classi dovrebbero up UpperCaseCamelStyle, le variabili sono in minuscolo volte lowerCamelCase oa volte all_lowecase_separated_by_underscores, come lo sono i nomi delle funzioni. "Costanti" dovrebbero essere ALL_UPPER_CASE_SEPARATED_BY_UNDERSCORES

In caso di dubbio consultare il PEP 8 , la sorgente Python , le convenzioni esistenti in una base di codice. Ma la cosa più importazione è di essere internamente coerenti il più possibile. il codice Tutto il Python dovrebbe guardare come è stato scritto dalla stessa persona quando mai possibile.

Dal momento che sono davvero pazza di "styling" Scriverò le linee guida che attualmente utilizzo quasi in un progetto di 8k SLOC con circa 35 file, la maggior parte di esso corrisponde PEP8.

  1. PEP8 dice 79 (WTF?), Vado con 80 e io sono abituato a ora. Meno movimento degli occhi, dopo tutto!

  2. docstring e roba che si estende su più righe in '''. Tutto il resto in ''. Inoltre non mi piace virgolette, ho solo utilizzare le virgolette singole per tutto il tempo ... immagino che sia perché sono venuto formare l'angolo JavaScript, dove è solo più facile usare troppo '', perché in questo modo non c'è bisogno di sfuggire a tutto la roba HTML: O

  3. A capo, built-in prima del codice di applicazioni personalizzate. Ma ho anche andare con un approccio "non riuscire presto", quindi se c'è qualcosa che di versione dipendeva (GTK per esempio) mi piacerebbe importare quella prima.

  4. Dipende, il più delle volte vado con l'importazione foo e dall'importazione foo, ma c'è un alcuni casi (ad esempio, il nome è già definito da un altro importazione) fossi io uso da foo bar di importazione come bla troppo.

  5. 4 spazio. Periodo. Se davvero si vuole utilizzare le schede, assicurarsi di convertirli in spazi prima di impegnarsi quando si lavora con SCM. MA MAI (!) MIX schede e gli spazi !!! Può e introdurrà bug orribili.

  6. some_method o foo_function, una costante, MyClass.

Inoltre è possibile discutere rientro nei casi in cui una chiamata di metodo o qualcosa campate linee multiple, e si può discutere su quale stile di continuazione di riga che si intende utilizzare. O tutto Surround con () o fare il \ alla fine della linea thingy. Faccio il secondo, e ho anche posto operatori e altre cose all'inizio della riga successiva.

# 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()

Anche io ho alcune linee guida per le operazioni di confronto, io uso sempre is(not) per controllare contro None True False e non faccio mai un confronto booleano implicita come if foo:, faccio sempre if foo is True:, la tipizzazione dinamica è bello, ma in alcuni casi, voglio solo essere sicuro che la cosa fa la cosa giusta!

Un'altra cosa che faccio è di non usare mai le stringhe vuote! Sono in un file costanti, nel resto del codice che ho roba come username == UNSET_USERNAME o label = UNSET_LABEL è solo più descrittivo in questo modo!

Ho anche alcune linee guida rigorose spazi bianchi e altre cose pazzo, ma mi piace (perché io sono pazzo su di esso), ho anche scritto uno script che controlli il mio codice:
http://github.com/BonsaiDen/Atarashii/blob/master/checkstyle

ATTENZIONE (!): Si farà male i tuoi sentimenti! Ancor più che JSLint fa ...

Ma questo è solo il mio 2 centesimi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top