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

    Deja una respuesta

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

    Subir

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.