PEP 8 – La guía de estilo para Python

La comunidad de usuarios de Python ha adoptado una guía de estilo que facilita la lectura del código y la consistencia entre programas de distintos usuarios. Esta guía no es de seguimiento obligatorio, pero es altamente recomendable. El documento completo se denomina PEP 8. En este resumen veremos algunos de los Indentación

Si: # opcion 1
    foo = funcion_que_crea_bar(variable_1, variable2
                               variable_3)
    # opcion 2
    foo = funcion_que_crea_bar(
                  variable_1, variable2
                  variable_3)
No:
    foo = funcion_que_crea_bar(variable_1, variable2
                  variable_3)

Tamaño máximo de línea

Las líneas deben limitarse a un máximo de 79 caracteres.

Líneas en blanco

Separar las definiciones de las clases y funciones con dos líneas en blanco. Los métodos dentro de clases se separan con una línea en blanco. Se recomienda utilizar líneas en blanco para separar partes del código, por ejemplo dentro de una función, que realizan tareas diferenciadas.

Imports

Los imports de distintos módulos deben estar en líneas diferentes:

Si: import os
    import sys

No: import os, sys

Sí se puede, poner en una línea los elementos que se importan de un mismo módulo:

from subprocess import Popen, PIPE

Los imports deben ponerse siempre al principio del fichero, justo después de los comentarios y de la documentación y antes de la definición de las variables globales y las constantes.

Los imports deben agruparse en el siguiente orden:

\1. standard library. 1. 3rd party libraries. 1. local application.

standard library: las del propio sistema, por ejemplo sys, os, re,..

party libraries: las de paquetes que hemos descargado de terceros por ejemplo, biopython, pandas, matplotlib

local application: los modulos que nosotros creemes en nuestros propios paquetes.

Cada grupo de imports debe estar separado por una línea en blanco.

Espacios en blanco en expresiones

Evitar espacios en blanco extra en:

  • Dentro de paréntesis.
 Yes: spam(ham[1], {eggs: 2})
No: spam( ham[ 1 ], { eggs: 2 })
  • Después de una coma.
Yes: if x == 4: print x, y; x, y = y, x 
No: if x == 4 : print x , y ; x , y = y , x
  • Antes del paréntesis de una llamada a una función.
 Yes: spam(1)
No: spam (1)
  • Antes del paréntesis de un índice.
 Yes: dict['key'] = list[index]
No: dict ['key'] = list [index]
  • Siempre rodear los operadores binarios con un espacio sencillo en ambos lados: assignment (=), augmented assignment (+=, -= etc.), comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not), Booleans (and, or, not).
Yes: submitted += 1
No:  submitted+=1
  • Usa espacios alrededor de los operadores aritméticos:
Yes:

    i = i + 1
    submitted += 1
    x = x * 2 - 1
    hypot2 = x * x + y * y
    c = (a + b) * (a - b)

No:

    i=i+1
    submitted +=1
    x = x*2 - 1
    hypot2 = x*x + y*y
    c = (a+b) * (a-b)