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 vamos a ver algunas de las recomendaciones relativas a las materias que hemos visto en este curso.

Indentación

Utilizar siempre 4 espacios y nunca mezclar tabuladores y espacios.

Si se continua una línea hay dos opciones aceptables:

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 pueden 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.

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]
  • Always surround these binary operators with a single space on either side: assignment (=), augmented assignment (+=, -= etc.), comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not), Booleans (and, or, not).

  • Use spaces around arithmetic operators:

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)

El zen de Python