Docstrings en Python: cómo documentar tu código

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
Pessoa programando em um notebook, vista de trás, com código desfocado exibido na tela em um fundo escuro

Los docstrings en Python son cadenas de documentación colocadas al inicio de módulos, clases, funciones y métodos. A diferencia de un comentario común, Python conserva el docstring en el atributo __doc__, lo que permite mostrarlo con help() y generar documentación automáticamente.

En esta guía aprenderás docstrings de una línea y multilínea, parámetros, retornos, excepciones, ejemplos, clases, módulos, convenciones y herramientas. La referencia principal es la PEP 257 sobre convenciones de docstrings.

Tu primer docstring

def saludar(nombre):
    """Devuelve un saludo para la persona indicada."""
    return f"Hola, {nombre}."

El docstring aparece inmediatamente después de la definición y utiliza comillas triples. Puedes inspeccionarlo:

print(saludar.__doc__)
help(saludar)

Docstring de una línea

Para una función sencilla, resume la acción con una frase imperativa o descriptiva.

def es_par(numero):
    """Indica si el número recibido es par."""
    return numero % 2 == 0

No repitas solamente el nombre ni describas la sintaxis obvia.

Docstring multilínea

def dividir(dividendo, divisor):
    """Divide dos números.

    Args:
        dividendo: Valor que será dividido.
        divisor: Valor utilizado como divisor.

    Returns:
        El resultado de la división.

    Raises:
        ValueError: Si el divisor es cero.
    """
    if divisor == 0:
        raise ValueError("El divisor no puede ser cero")

    return dividendo / divisor

La primera línea resume. Después de una línea en blanco, el cuerpo explica el contrato público.

Qué documentar

  • Qué hace la función o clase.
  • Significado y restricciones de los parámetros.
  • Valor devuelto y casos especiales.
  • Excepciones que forman parte del contrato.
  • Efectos secundarios importantes.
  • Ejemplos cuando aclaren un uso no obvio.

La guía de funciones en Python ayuda a diseñar interfaces pequeñas que pueden documentarse con claridad.

Formatos comunes

Python no obliga a usar un formato único. Los estilos más habituales son Google, NumPy y reStructuredText. Elige uno según las herramientas y mantenlo en todo el proyecto.

Estilo Google

def buscar_usuario(usuario_id, incluir_inactivo=False):
    """Busca un usuario por identificador.

    Args:
        usuario_id: Identificador numérico del usuario.
        incluir_inactivo: Incluye cuentas inactivas si es True.

    Returns:
        Un diccionario con los datos o None si no existe.
    """
    ...

Estilo NumPy

def buscar_usuario(usuario_id, incluir_inactivo=False):
    """Busca un usuario por identificador.

    Parameters
    ----------
    usuario_id : int
        Identificador numérico del usuario.
    incluir_inactivo : bool, optional
        Incluye cuentas inactivas.

    Returns
    -------
    dict | None
        Datos del usuario o None.
    """
    ...

Docstrings y type hints

def calcular_total(
    precios: list[float],
    descuento: float = 0.0,
) -> float:
    """Calcula el total después de aplicar un descuento.

    Args:
        precios: Precios no negativos.
        descuento: Fracción entre 0 y 1.

    Returns:
        Total final de la compra.

    Raises:
        ValueError: Si el descuento queda fuera del intervalo.
    """
    if not 0 <= descuento <= 1:
        raise ValueError("Descuento no válido")

    return sum(precios) * (1 - descuento)

Los type hints muestran tipos; el docstring explica significado, unidades, restricciones y comportamiento. No dupliques información sin aportar contexto.

Documentar clases

class CuentaBancaria:
    """Representa una cuenta con saldo no negativo.

    Attributes:
        titular: Nombre de la persona titular.
        saldo: Cantidad disponible.
    """

    def __init__(self, titular, saldo=0.0):
        self.titular = titular
        self.saldo = saldo

    def depositar(self, cantidad):
        """Añade una cantidad positiva al saldo."""
        if cantidad <= 0:
            raise ValueError("La cantidad debe ser positiva")
        self.saldo += cantidad

El docstring de clase describe el propósito y el estado público. Cada método documenta su propio contrato. La guía de programación orientada a objetos en Python explica clases y métodos.

Docstring de módulo

"""Herramientas para generar informes de ventas.

El módulo carga registros, valida columnas y crea resúmenes
por categoría. No modifica el archivo de origen.
"""

from pathlib import Path

El docstring aparece antes de los imports, salvo elementos especiales como el shebang o la declaración de codificación.

Documentar excepciones

Documenta excepciones que el usuario de la función puede prever y manejar.

def cargar_configuracion(ruta):
    """Carga una configuración JSON.

    Raises:
        FileNotFoundError: Si la ruta no existe.
        ValueError: Si el JSON no contiene la estructura requerida.
    """
    ...

No hace falta enumerar cada error interno posible. La guía de try y except en Python ayuda a definir excepciones útiles.

Añadir ejemplos ejecutables

def duplicar(numero):
    """Devuelve el doble de un número.

    Examples:
        >>> duplicar(4)
        8
        >>> duplicar(-2)
        -4
    """
    return numero * 2

Los ejemplos con formato interactivo pueden ejecutarse con doctest cuando son deterministas y pequeños.

python -m doctest -v modulo.py

Generar documentación con pydoc

La herramienta estándar pydoc obtiene información de los docstrings.

python -m pydoc mi_modulo
python -m pydoc -w mi_modulo

Para proyectos grandes, herramientas como Sphinx o MkDocs pueden convertir docstrings y archivos Markdown en un sitio completo.

Comentarios y docstrings no son lo mismo

  • Un comentario explica una decisión interna para quien lee el código.
  • Un docstring describe cómo utilizar una interfaz pública.

La guía de comentarios en Python muestra cuándo usar cada recurso.

PEP 8 y documentación

PEP 8 se concentra en estilo de código, mientras PEP 257 trata docstrings. Ambas buscan legibilidad y consistencia. Consulta la guía de PEP 8 en Python para nombres, imports y formato.

Probar documentación y comportamiento

Los ejemplos de docstring no reemplazan una suite de pruebas. Utiliza tests para casos límite, excepciones y reglas de negocio. La guía de pruebas unitarias en Python muestra cómo organizar estas verificaciones.

Errores frecuentes

  • Repetir el nombre de la función sin explicar su contrato.
  • Dejar documentación desactualizada después de cambiar el código.
  • Documentar detalles internos inestables como si fueran públicos.
  • Combinar varios estilos en el mismo proyecto.
  • Duplicar type hints sin añadir significado.
  • Prometer excepciones o retornos que la implementación no cumple.
  • Escribir docstrings enormes para funciones que deberían dividirse.

Lista de revisión

  • ¿La primera línea resume claramente?
  • ¿Los parámetros tienen significado y restricciones?
  • ¿El retorno está descrito?
  • ¿Las excepciones públicas están documentadas?
  • ¿Los ejemplos siguen funcionando?
  • ¿El formato es consistente con el proyecto?

Conclusión

Los docstrings en Python transforman una función en una interfaz comprensible para personas y herramientas. Escribe un resumen breve, documenta contratos y restricciones, mantén los ejemplos actualizados y elige un formato consistente. Cuando una función resulta difícil de documentar, normalmente también conviene revisar su diseño y dividir responsabilidades.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Logo do Python com o texto 'PEP 8' sobre fundo azul escuro, representando o guia de estilo da linguagem
    Buenas Prácticas
    Foto de perfil de Leandro Hirt da Academify

    PEP 8 en Python: guía para escribir código limpio

    Aprende PEP 8 en Python: nombres, sangría, imports, espacios, líneas, funciones, comentarios, docstrings, linters y refactorización.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026