Pregunta 1¿Qué función muestra un diccionario anidado preservando su estructura con saltos de línea e indentación?
pprint — Mostrar dict y list anidados de forma legible
Lo que print apelmaza en una línea, pprint.pp lo muestra con saltos e indentación; pformat te devuelve la cadena ya formateada para pasarla al log. Practícalo con datos de pedidos.
Cuando usas print para depurar, los diccionarios y listas anidados se apilan en una sola línea ilegible todo el tiempo. El módulo pprint (pretty-print) es una herramienta de la biblioteca estándar que muestra estructuras anidadas con indentación y saltos de línea, lo que lo hace muy útil para depuración y salida de logs.
pp y pformat — Una imprime, la otra devuelve una cadena
pprint tiene dos funciones principales. pprint.pp(value) es una función que formatea e imprime directamente a la salida estándar, devolviendo None. pprint.pformat(value), por su parte, devuelve la cadena formateada sin imprimir nada en pantalla.
| Función | Propósito | Devuelve |
|---|---|---|
| pprint.pp(value) | formatear e imprimir a stdout | None (imprime directamente) |
| pprint.pformat(value) | devolver la cadena formateada | cadena formateada |
| indent=N | ancho de indentación (por defecto 1) | — |
| width=N | ancho máximo de línea (por defecto 80) | — |
| sort_dicts=False | preservar el orden de claves del dict (Python 3.8+) | — |
Mostrar la estructura con pprint.pp
pprint.pp(value) y print(value) se ven igual para valores simples, pero su salida diverge en cuanto tienes dicts o lists anidados — print lo apila todo en una línea, mientras que pp añade saltos de línea e indentación según la profundidad de la estructura.
Obtener la cadena formateada con pprint.pformat
pprint.pformat(value) devuelve la cadena formateada sin imprimir nada. Recurre a pformat cuando quieras redirigir la salida (pasarla a un logger, pegarle información extra antes/después y luego imprimir, o incrustarla en un mensaje de error). Las opciones width=N e indent=N funcionan igual que en pp.
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Cuál usarías para obtener una cadena de pprint y pasarla a la salida de log?
Pregunta 3¿Cómo cambias el ancho de visualización de pprint.pp a 40 caracteres?