Aprende leyendo en orden

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.

pp vs pformat
valor anidadodict / listpprint.pp(value)imprime a stdoutdevuelve Nonevalor anidadodict / listpprint.pformat(value)devuelve lacadena formateada
pp formatea e imprime directamente (devuelve None). pformat simplemente devuelve la cadena formateada sin imprimir nada. Usa pformat cuando quieras manipular la cadena antes de imprimirla, o incrustarla en una línea de log o un mensaje de error.
FunciónPropósitoDevuelve
pprint.pp(value)formatear e imprimir a stdoutNone (imprime directamente)
pprint.pformat(value)devolver la cadena formateadacadena formateada
indent=Nancho de indentación (por defecto 1)
width=Nancho máximo de línea (por defecto 80)
sort_dicts=Falsepreservar 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 anidadosprint 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.

Tienes preparado un diccionario anidado de pedido order. Imprímelo con print y con pprint.pp y compáralos visualmente.

① Imprime primero --- print ---, luego print(order).

② Imprime después --- pprint.pp ---, luego pprint.pp(order).

(Si lo ejecutas correctamente, aparecerá una explicación.)

Editor Python

Ejecutar el código para ver el resultado

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.

Tienes preparado un diccionario de configuración config. Formatealo con pformat e imprímelo con una etiqueta estilo log. Deja que pprint se ocupe del formato; tú concéntrate en tratar el resultado como una cadena.

① Formatea config con pprint.pformat y width=40, guardando la cadena formateada en una variable llamada formatted.

② Imprime la línea de encabezado [CONFIG] Configuración al inicio con print, luego print(formatted).

Editor Python

Ejecutar el código para ver el resultado
QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Qué función muestra un diccionario anidado preservando su estructura con saltos de línea e indentación?

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?