Pregunta

Soy bastante nuevo en Python, y quiero desarrollar mi primer proyecto de código abierto grave. Quiero preguntar cuál es el estilo de codificación común para proyectos de pitón. Voy a poner también lo que estoy haciendo en este momento.

1.- ¿Cuál es el ancho de la columna más utilizado? (La pregunta eterna)
Actualmente me quedo con 80 columnas (y es un dolor!)

2.- ¿Qué cita a utilizar? (He visto de todo y PEP 8 no menciona nada claro)
Estoy usando comillas simples para todo, pero las cadenas de documentación, que utilizan comillas dobles triples.

3.- ¿Dónde pongo mis importaciones?
Los estoy poniendo al encabezado del archivo en este orden.

import sys
import -rest of python modules needed-

import whatever
import -rest of application modules-

<code here>

4.- ¿Puedo utilizar "importar whatever.function como bla"?
Vi algunos documentos que el desconocimiento haciendo esto.

5.- aquí o espacios para sangrar?
Actualmente el uso de 4 pestañas espacios.

6.- estilo de denominación de variables? Estoy usando minúsculas para todo, pero las clases, que puse en camelCase.

Cualquier cosa que usted recomendaría?

¿Fue útil?

Solución

PEP 8 es más o menos "la raíz" de todo el estilo común guías.

Python guía de estilo tiene algunas partes que están muy bien pensados de, pero otros son idiosincrásicos (los guiones de dos espacio en lugar de los populares los cuatro espacio, y el estilo CamelCase para las funciones y los métodos en lugar del estilo camel_case, son bastante grandes idiosincrasias).

a sus preguntas específicas:

  

1.- ¿Cuál es el ancho de la columna más utilizado? (La pregunta eterna)   Actualmente me quedo con 80 columnas   (Y es un dolor!)

80 columnas es más popular

  

2.- ¿Qué cita a utilizar? (He visto de todo y PEP 8 no menciona   nada claro) estoy usando solo   Cotizaciones de todo, pero las cadenas de documentación,   que utilizan comillas dobles triples.

Yo prefiero el estilo que está utilizando, pero incluso Google no era capaz de llegar a un consenso acerca de esto: - (

  

3.- ¿Dónde puedo poner mis importaciones? Los estoy poniendo al encabezado del archivo en este   orden.

     

import sys importar -Resto del pitón   módulos necesarios -

     

importación importar lo -Resto   módulos de aplicación -

     

Sí, una excelente elección, y también muy populares.

  

4.- ¿Puedo utilizar "whatever.function importación como bla"? vi algunos   documentos que el desconocimiento de hacer esto.

Te recomendamos siempre los módulos de importación - nombres no específicos desde el interior de un módulo. Esto no es sólo el estilo - hay grandes ventajas, por ejemplo, en la capacidad de prueba en hacer eso. La cláusula as está bien, para acortar el nombre o evitar conflictos de un módulo.

  

5.- tabuladores o espacios para sangrar? Actualmente el uso de 4 pestañas espacios.

En su gran mayoría más popular.

  

6.- estilo de denominación de variables? Estoy usando minúsculas para todo, pero las clases,   que puse en camelCase.

Casi todo el mundo los nombres de las clases, con mayúscula inicial y constantes con todo en mayúsculas.

Otros consejos

1.- Casi todo el mundo tiene un 16: 9 o 16:10 monitor de hoy día. Incluso si no tienen una amplia pantalla tienen un montón de píxeles, 80 cols no es un gran interruptor práctico acuerdo como lo fue cuando todo el mundo estaba cortando la línea de comandos en una ventana de terminal remoto en un monitor 4: 3 en 320 X 240. Por lo general terminan la línea cuando se hace demasiado largo, que es subjetiva. Estoy a 2048 X 1152 en un 23" Monitor de X 2.

2.- Las comillas simples por defecto por lo que no tiene que escapar comillas dobles, comillas dobles cuando se necesita para incrustar comillas simples y comillas triples para cadenas con saltos de línea embebidos.

3.- ponerlos en la parte superior del archivo, a veces se los pone en el principal función si no son necesarios a nivel mundial para el módulo.

4.- Es un idioma común para cambiar el nombre de algunos módulos. Un ejemplo bueno es la siguiente.

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

pero la forma preferida para importar sólo una clase o función está from module import xxx con el as yyy opcional si es necesario

5.- Siempre espacios de uso! 2 o 4, siempre y cuando no hay TABS

6.- Clases debe a UpperCaseCamelStyle, las variables se escriben en minúscula veces lowerCamelCase oa veces all_lowecase_separated_by_underscores, al igual que los nombres de función. "Constantes" deben ser ALL_UPPER_CASE_SEPARATED_BY_UNDERSCORES

En caso de duda consulte la PEP 8 , la fuente Python , convenciones existentes en una base de código. Pero lo más importación ha de ser internamente consistente como sea posible. código Python Todo debe parecer que fue escrito por la misma persona siempre que sea posible.

Desde que estoy realmente loco por "labrar" Voy a escribir las directrices que uso actualmente en un proyecto 8k SLOC cerca con cerca de 35 archivos, la mayor parte de partidos PEP8.

  1. PEP8 dice 79 (WTF?), Voy con 80 y estoy acostumbrado a ello ahora. Menos movimiento de los ojos después de todo!

  2. Las cadenas de documentación y otras cosas que se extiende por varias líneas en '''. Todo lo demás en ''. Además no como comillas dobles, sólo utilizar comillas simples todo el tiempo ... supongo que es porque vine formar la esquina JavaScript, donde es más fácil usar demasiado '', porque de esa manera no tiene que escapar de todo la materia HTML: O

  3. A la cabeza, una función de código antes de la aplicación personalizada. Pero también voy con un enfoque "a prueba temprana", por lo que si hay algo que dependía de la versión (GTK, por ejemplo) me importo que en primer lugar.

  4. depende, la mayoría de las veces que voy con foo importación y de importación foo, pero hay unos ciertos casos (por ejemplo, el nombre ya está definido por otra importación) se utilizo en la barra de importación foo como bla también.

  5. 4 espacios. Período. Si realmente desea utilizar pestañas, asegúrese de convertirlos en espacios antes de cometer cuando se trabaja con SMC. Pero nunca (!) MIX tabulaciones y espacios !!! Puede e introducirá errores horribles.

  6. some_method o foo_function, una constante, MyClass.

También se puede discutir sobre la sangría en los casos en que una llamada al método o múltiples líneas algo vanos, y se puede discutir sobre qué estilo de continuación de línea que va a utilizar. De cualquier envolvente todo con () o hacer la \ al final de la manivela de la línea. Hago este último, y también a los operadores lugar y otras cosas en el inicio de la siguiente línea.

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

También tengo algunas directrices para las operaciones de comparación, siempre uso is(not) para comprobar contra None True False y nunca hago una comparación booleana implícita como if foo:, hago siempre if foo is True:, tipado dinámico es agradable, pero en algunos casos sólo quiero estar seguro que lo hace lo correcto!

Otra cosa que hago es nunca utilizar cadenas vacías! Ellos son constantes en un archivo, en el resto del código que tengo cosas por el estilo username == UNSET_USERNAME o label = UNSET_LABEL es sólo más descriptiva de esa manera!

También tiene algunas pautas estrictas de espacio en blanco y otras cosas loco, pero me gusta (porque estoy loco por ella), que incluso escribió un script que comprueba mi código:
http://github.com/BonsaiDen/Atarashii/blob/master/checkstyle

ADVERTENCIA (!): Se hará daño a sus sentimientos! Incluso más que JSLint hace ...

Pero eso es sólo mis 2 centavos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top