Anexo: PEP 8, la guía de estilo de Python
PEP 8 es el documento oficial que recoge las convenciones de estilo para escribir código Python. No son reglas del lenguaje (Python ejecutará tu código aunque las ignores) sino acuerdos de la comunidad para que el código sea legible y coherente. La idea de fondo es simple: el código se lee muchas más veces de las que se escribe.
Nota: PEP son las siglas de Python Enhancement Proposal, documentos que proponen mejoras al lenguaje o a su ecosistema. El PEP 8 fue escrito por Guido van Rossum, el creador de Python.
Indentación
Python usa la indentación para delimitar bloques de código, así que no es opcional. PEP 8 establece 4 espacios por nivel de indentación. No tabuladores, no 2 espacios: 4 espacios.
# correcto
def saludar(nombre):
print("hola", nombre)
# incorrecto (2 espacios)
def saludar(nombre):
print("hola", nombre)
Longitud de línea
Las líneas no deberían superar los 79 caracteres. Para líneas largas, Python permite partir la expresión dentro de paréntesis, corchetes o llaves:
resultado = (primer_valor
+ segundo_valor
+ tercer_valor)
Nombres de variables y funciones
Se usa snake_case: todo en minúsculas, palabras separadas por guión bajo. Para constantes, todo en mayúsculas.
nombre_completo = "Ana García" # variable: snake_case
def calcular_media(valores): # función: snake_case
pass
MAX_INTENTOS = 3 # constante: MAYÚSCULAS
Las clases usan CamelCase (cada palabra empieza en mayúscula, sin separadores):
class UsuarioRegistrado:
pass
Espacios alrededor de operadores
Un espacio a cada lado de los operadores de asignación y comparación. Sin espacios entre el nombre de la función y el paréntesis, ni dentro de los paréntesis:
# correcto
x = 5
resultado = x + 1
print(resultado)
# incorrecto
x=5
resultado=x+1
print( resultado )
En los argumentos con valor por defecto, sin espacios alrededor del =:
# correcto
def conectar(host, puerto=8080):
pass
# incorrecto
def conectar(host, puerto = 8080):
pass
Líneas en blanco
Dos líneas en blanco antes y después de una definición de función o clase en el nivel superior. Una línea en blanco entre métodos dentro de una clase:
def primera_funcion():
pass
def segunda_funcion():
pass
Imports
Los imports van al principio del archivo, cada uno en su propia línea, agrupados en este orden: módulos de la biblioteca estándar, módulos de terceros, módulos propios del proyecto.
# correcto
import os
import sys
import requests
import mi_modulo
# incorrecto
import os, sys
Comentarios
Los comentarios deben explicar el por qué, no el qué: el código ya dice qué hace. Empiezan con # seguido de un espacio, y van en la misma línea o en la línea anterior al código que comentan:
# correcto: explica la razón
intentos = 3 # límite impuesto por la API externa
# inútil: repite lo que ya dice el código
x = x + 1 # suma 1 a x
Comillas
Python acepta comillas simples y dobles indistintamente. PEP 8 no impone una preferencia, pero sí pide coherencia: elige una y úsala siempre. La excepción es cuando la cadena contiene el tipo de comilla que usas habitualmente, en cuyo caso usas el otro tipo para evitar el escape.
Verificar tu código
No tienes que memorizar PEP 8. Existen herramientas que analizan tu código y señalan las desviaciones:
pycodestyle: comprueba el estilo e informa de las infracciones.flake8: combina comprobación de estilo y detección de errores.black: formatea el código automáticamente según PEP 8. No avisa, corrige directamente.
La mayoría de editores modernos, incluido VS Code, pueden integrar estas herramientas y subrayar los problemas en tiempo real.