Consejos para debuggear con print()

No debemos sentir vergüenza de debuggear con print() ¡está perfectamente bien! Muchos errores se resuelven fácilmente con solo unos pocos controles en los lugares correctos. Por mucho que me encante usar un debugger en un IDE específico, a menudo lo primero que hago para debuggear es utilizar la instrucción print().

Consejos para debuggear con print()

Aquí dejo 5 consejos para aprovechar al máximo la depuración con print()

Índice

1. Debuggear variables con f-strings y =

A menudo usamos print() para comprobar el valor de una variable, como:

>>> print("widget_count =", widget_count)
widget_count = 9001

En Python 3.8+ podemos usar una cadena f con el especificador = para lograr lo mismo con menos escritura. Este especificador imprime el nombre de la variable, "=", y el repr() de su valor:

>>> print(f"{widget_count=}")
widget_count=9001

No estamos limitados a nombres de variables con =. Podemos usar cualquier expresión:

>>> print(f"{(widget_count / factories)=}")
(widget_count / factories)=750.0833333333334

Si prefiere espacios alrededor de su =, puede agregarlos en la cadena f y aparecerán en la salida:

>>> print(f"{(widget_count / factories) = }")
(widget_count / factories) = 750.0833333333334

2. Print() y Outputs con emoji 🙂

Haga que sus declaraciones de salida se destaquen entre otras salidas con emojis:

print("👍 spam()")

  • 👉 “Alcancé este punto”
  • ❌ “Entró en una excepción”
  • ✅ “Pasó validación”

Para escribir emoji más rápido, use el método abreviado de teclado para su sistema operativo:

  • Windows: Windows Key + .
  • macOS: Control + Command + Space
  • Ubuntu: Control + .
  • Otros Linux: 🤷‍♂️ consultar documentación

3. Utilice rich o pprint para una impresión bonita

Rich es una biblioteca de formato de terminal. Incluye muchas herramientas para embellecer la salida del terminal y se puede instalar con pip install rich.

La función print() de Rich es útil para depurar objetos. Agrega la sangría cuidadosamente a estructuras de datos anidadas grandes y agrega resaltado de sintaxis:

Rich Python

Si no tiene la libertad de instalar Rich, puede usar la función pprint() de Python en su lugar. La "p" adicional significa "bonita". pprint() también sangra las estructuras de datos, aunque sin color ni estilo:

>>> from pprint import pprint
>>> pprint(luke)
{'birth_year': '19BBY',
 'films': [3, 4, 5, 6, 7, 8],
 'id': 1,
 'name': 'Luke Skywalker'}

4. Use locals() para debugear todas las variables locales

Las variables locales son todas las variables definidas dentro de la función actual. Podemos tomar todas las variables locales con locals(), que las devuelve en un diccionario. Esto es conveniente para depurar varias variables a la vez, más aún cuando se combina con Rich o pprint.

locals() python

Cuando ejecutamos este código, vemos el diccionario de valores antes de la excepción:

return locals()

5. Use vars() para debugear todos los atributos de un objeto

La función incorporada vars() retorna un diccionario con los atributos de un objeto. Esto es útil cuando queremos depurar muchos atributos a la vez.

>>> rprint(vars(widget))
{'id': 1, 'name': 'Batara-Widget'}

Esto es todo amigos, espero que esta entrada los ayude a darle más color a sus salidas con print():

Saludos, Diego

dcaraballo

Creador de @PythonDiario, amante de la Tecnología y la Naturaleza. Programador Python, C# . NET

  1. Javier dice:

    Muy interesante, muchas gracias,

    1. dcaraballo dice:

      Gracias a ti por comentar. Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey