Mi Diario Python

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()")

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

    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:

    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.

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

    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

    Salir de la versión móvil