Guía de Estilo para código Python
Andrés Chávez
¿Y por qué 8? Existen muchos PEPs o "Propuestas de Mejora de Python" (Python Enhancement Proposals), el PEP 8 es la propuesta del estándar de programación y buenas prácticas para el lenguaje.
En general, es una guía para mejorar la legibilidad del código y hacerlo más consistente.
Altamente recomendado como primera lectura de todo Pythonista, sea neófito o profesional.
Una de las ideas clave de Guido es que se lee el código mucho más seguido de lo que se escribe.
Una guía de estilo es una cuestión de consistencia. La consistencia dentro de un proyecto es más importante.
Pero lo más importante: saber cuándo ser inconsistente
Las siguientes lineas deben alinearse verticalmente con el carácter que se ha utilizado (paréntesis, llaves, corchetes) o haciendo uso de la “hanging indent” (aplicar tabulaciones en todas las líneas con excepción de la primera).
Al utilizar este último método, no debe haber argumentos en la primera línea, y más tabulación debe utilizarse para que la actual se entienda como una línea de continuación.
Si:
# Alineado con el paréntesis que abre la función
foo = long_function_name(var_one, var_two,
var_three, var_four)
# Más indentación para distinguirla del resto de las líneas
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
# Argumentos en la primera línea cuando no se estáhaciendo uso de la alineación vertical
foo = long_function_name(var_one, var_two,
var_three, var_four)
# La línea de continuación no se distingue del contenido de la función
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
No:
El paréntesis / corchete / llave que cierre una asignación debe estar alineado con el primer carácter que no sea un espacio en blanco:
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)
O puede ser alineado con el carácter inicial de la primera línea:
Nunca mezcles tabulaciones y espacios. El método de indentación más popular en Python son los espacios.
Cualquier código indentado con una mezcla de espacios y tabulaciones debe ser convertido a espacios exclusivamente.
Cuando se invoca la línea de comando intérprete de Python 2 con la opción '-t', se emiten advertencias sobre código que mezcla ilegalmente tabulaciones y espacios. Al usar '-tt' estas advertencias se convierten en errores. Estas opciones son muy recomendables!
Limita todas las líneas a un máximo de 79 caracteres.
Limitar el ancho de la ventana editor requerido hace que sea posible tener varios archivos de lado a lado abierto, y funciona bien cuando se utilizan herramientas de revisión de código que presentan las dos versiones en columnas adyacentes.
La forma preferida de envolver largas filas es mediante el uso de continuación de línea implícita de Python dentro de paréntesis, corchetes y llaves. Las barras invertidas todavía pueden ser apropiados en algunas ocasiones.
Separa funciones de alto nivel y definiciones de clase con dos líneas en blanco.
Definiciones de métodos dentro de una clase son separadas por una línea en blanco.
Líneas en blanco adicionales pueden ser utilizadas (escasamente) para separar grupos de funciones relacionadas.
Usa líneas en blanco en funciones, escasamente, para indicar secciones lógicas.
Las importaciones deben estar en líneas separadas
#Sí
import os
import sys
#No
import sys, os
Sin embargo, es correcto:
from subprocess import Popen, PIPE
Las importaciones siempre se colocan al comienzo del archivo, simplemente luego de cualquier comentario o documentación del módulo, y antes de globales y constantes.
Evita usar espacios en blanco extraños en las siguientes situaciones:
Inmediatamente dentro de paréntesis, corchetes o llaves:
#Sí
spam(ham[1], {eggs: 2})
#No
spam( ham[ 1 ], { eggs: 2 } )
Inmediatamente antes de una coma, un punto y coma o dos puntos:
#Sí
if x == 4: print x, y; x, y = y, x
#No
if x == 4 : print x , y ; x , y = y , x
Entre otros ...
http://www.recursospython.com/pep8es.pdf