Pergunta

Eu sou muito novo para Python, e eu quero desenvolver meu primeiro graves projeto de código aberto.Eu quero perguntar o que é comum estilo de codificação para a linguagem python projetos.Vou colocar também o que eu estou fazendo agora.

1.- O que é o mais amplamente utilizado largura da coluna?(a eterna questão)
Atualmente estou aderindo a 80 colunas (e é uma dor!)

2.- O que de cotações para usar?(Eu já vi de tudo e PEP 8 não falar nada claro)
Eu estou usando aspas simples para tudo, mas docstrings, que usam o triplo de aspas duplas.

3.- Onde devo colocar minha importação?
Eu estou colocando-os no arquivo de cabeçalho, nesta ordem.

import sys
import -rest of python modules needed-

import whatever
import -rest of application modules-

<code here>

4.- Eu posso usar "importar tudo.função como blá"?
Eu vi alguns documentos que a desconsideração de fazer isso.

5.- Tabulações ou espaços para avançar?
Atualmente com 4 espaços separadores.

6.- Nomenclatura de variáveis de estilo?Eu estou usando letras minúsculas para tudo, mas as classes, que eu pus em camelCase.

Qualquer coisa que você recomendaria?

Foi útil?

Solução

PEP 8 é praticamente "a raiz" de todos os guias de estilo comum.

Google's Guia do estilo Python Tem algumas partes que são muito bem pensadas, mas outras são idiossincráticas (os recuos de dois espaço em vez dos populares quatro espaço, e o estilo de camelcase para funções e métodos em vez do estilo camel_case, são grandes idiossincrasias).

Em suas perguntas específicas:

1.- Qual é a largura da coluna mais usada? (A pergunta eterna) Atualmente, estou mantendo 80 colunas (e é uma dor!)

80 colunas é mais popular

2.- Que cotações para usar? (Eu já vi tudo e o Pep 8 não menciona nada claro) Estou usando citações únicas para tudo, exceto Docstrings, que usam citações duplas triplas.

Eu prefiro o estilo que você está usando, mas mesmo o Google não conseguiu chegar a um consenso sobre isso :-(

3.- Onde eu coloco minhas importações? Estou colocando -os no cabeçalho do arquivo nesta ordem.

importar sistemas de importação -Rest dos módulos python necessários

importar qualquer importação de módulos de aplicação-

Sim, excelente escolha e popular também.

4.- Posso usar "Importar o que for. Funcionar como blá"? Eu vi alguns documentos que desconsideram fazer isso.

Eu recomendo fortemente que você sempre importe módulos - não nomes específicos de dentro de um módulo. Este não é apenas um estilo - existem fortes vantagens, por exemplo, em testabilidade em fazer isso. o as A cláusula é boa, para encurtar o nome de um módulo ou evitar confrontos.

5.- guias ou espaços para recuar? Atualmente usando 4 guias de espaços.

Orimista mais popular.

6.- Estilo de nomeação variável? Estou usando minúsculas para tudo, menos aulas, que coloquei em camelcase.

Quase todo mundo nomeia aulas com constantes iniciais e maiúsculas com total de suppercase.

Outras dicas

1.- A maioria das pessoas tem um 16:9 ou 16:10 monitor agora dias.Mesmo se eles não têm uma grande tela que tem um monte de pixels, 80 cols não é um grande prática disjuntor do negócio como era quando todo mundo estava de hackers na linha de comando em um terminal remoto janela 4:3 no monitor de 320 X 240.Eu normalmente final da linha quando ele fica muito tempo, o que é subjetivo.Estou em 2048 X 1152 em um 23" Monitor X 2.

2.- As aspas simples, por padrão, então você não tem que escapar de aspas Duplas, aspas Duplas quando você precisa incorporar aspas simples e aspas Triplas para seqüências de caracteres com o embedded quebras de linha.

3.- Colocá-los no topo do arquivo, por vezes, colocá-los no principal função se eles não são necessários, globalmente, para o módulo.

4.- É uma expressão comum para mudar o nome de alguns módulos.Um bom exemplo é o seguinte.

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

mas a melhor maneira de se importar apenas uma classe ou função é from module import xxx com o opcional as yyy se necessário

5.- Sempre utilize ESPAÇOS!2 ou 4 enquanto não há GUIAS

6.- Classes deve-se UpperCaseCamelStyle, as variáveis são minúsculas, às vezes, lowerCamelCase ou, às vezes, all_lowecase_separated_by_underscores, como são os nomes de função."Constantes" deve ser ALL_UPPER_CASE_SEPARATED_BY_UNDERSCORES

Quando em dúvida, consulte o PEP 8, a origem Python, convenções existentes em uma base de código.Mas o mais importe coisa é ser internamente consistente possível. Todos Python de código deve parecer que foi escrito pela mesma pessoa, sempre que possível.

Como estou muito louco pelo "estilo", anotarei as diretrizes que atualmente uso em um projeto SLOC quase 8k com cerca de 35 arquivos, a maioria corresponde ao PEP8.

  1. Pep8 diz 79 (WTF?), Eu vou com 80 e estou acostumado agora. Afinal, menos movimento ocular!

  2. Docstrings e coisas que abrangem várias linhas em '' '. Todo o resto ''. Além disso, não gosto de citações duplas, só uso citações únicas o tempo todo ... acho que é porque eu vim para o canto JavaScript, onde é mais fácil usar '', porque assim você não precisa escapar de tudo as coisas HTML: O

  3. Na cabeça, embutido antes do código do aplicativo personalizado. Mas eu também vou com uma abordagem "Fail Early"; portanto, se há algo de que a versão dependia (GTK, por exemplo), eu importaria isso primeiro.

  4. Depende, na maioria das vezes, eu vou com importação foo e de importação foo, mas existem certos casos (por exemplo, o nome já está definido por outra importação) se eu também usei da barra de importação Foo como BLA.

  5. 4 espaços. Período. Se você realmente deseja usar as guias, convertê -las em espaços antes de se comprometer ao trabalhar com o SCM. Mas nunca (!) Misture guias e espaços !!! Pode e vai introduzir bugs horríveis.

  6. Algum_method ou foo_função, uma constante, myclass.

Além disso, você pode discutir sobre o indentação nos casos em que uma chamada de método ou algo abrange várias linhas, e você pode discutir sobre qual estilo de continuação de linha usará. Ou cercar tudo com () ou faça o \ No final da linha. Eu faço o último e também coloco operadores e outras coisas no início da próxima linha.

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

Também tenho algumas diretrizes para operações de comparação, sempre uso is(not) para verificar None True False e eu nunca faço uma comparação booleana implícita como if foo:, Eu sempre faço if foo is True:, digitação dinâmica é boa, mas em alguns casos eu só quero ter certeza de que a coisa faz a coisa certa!

Outra coisa que faço é nunca usar cordas vazias! Eles estão em um arquivo de constantes, no restante do código que eu tenho coisas como username == UNSET_USERNAME ou label = UNSET_LABEL É apenas mais descritivo assim!

Eu também tenho algumas diretrizes estritas de espaço em branco e outras coisas loucas, mas eu gosto (porque sou louco por isso), até escrevi um script que verifica meu código:
http://github.com/bonsaiden/atarashii/blob/master/checkstyle

Aviso (!): Isso prejudicará seus sentimentos! Ainda mais do que JSLint ...

Mas esses são apenas meus 2 centavos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top