Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Domine la depuración en Python: técnicas eficientes y mejores prácticas

Domine la depuración en Python: técnicas eficientes y mejores prácticas

Depurar código Python, para muchos de nosotros, se reduce a añadir sentencias print e intentar razonar qué ocurre basándose en la salida. No es ideal, pero por alguna razón, la gente no quiere tocar el depurador de Python.

Usar print para depurar

Si eres de los que usan print para depurar, no te juzgo. Aprender Python es difícil. Programar es difícil. La vida es difícil. Entiendo que aprender otra cosa más parezca agotador si ya estás luchando. Y añadir esa sentencia print a tu código… es más fácil. Una pequeña confesión: yo también lo hago a menudo. No es tan malo como algunos pintan.

Dicho esto, te voy a enseñar un pequeño truco que será tan fácil como añadir sentencias print a tu código. Sin embargo, este truco te da poderes de depuración infinitos y te permitirá conquistar el mundo, si fuera necesario.

Establecer un punto de interrupción (breakpoint) en Python

No necesitas un IDE para depurar tu código correctamente. Este truco siempre funciona, incluso en el editor más simple, e incluso en Jupyter Notebooks.

El truco consiste en esto: establecer un punto de interrupción usando la instrucción breakpoint(). Puedes insertarla en tu código, sin importar qué editor o IDE uses, en el punto donde normalmente pondrías esa molesta sentencia print.

¿Qué pasa cuando lo haces? ¡Veamos! Crea un programa simple, como el siguiente:

def add_two(x):
    return x + 2

for i in range(1, 10):
    a = add_two(i)
    breakpoint()
    print(a)

Cuando ejecutas esto, no importa si lo haces en el REPL, desde la línea de comandos o en tu IDE, caes en el depurador de Python llamado PDB. ¿Y ahora qué?

Usar el depurador de Python

Cuando inicio el pequeño programa anterior, esto es lo que ocurre:

$ python3 breakpointing.py
> /home/erik/breakpointing.py(7)<module>()
-> print(a)
(Pdb)_

Hay un par de cosas que ver aquí:

El depurador de Python es en realidad un shell de Python totalmente funcional, igual que el REPL.

En este punto, podemos inspeccionar el entorno actual. Veamos cuál es el valor de a ahora:

(Pdb) print(a)
3
(Pdb) print(i)
1

En lugar de print, también puedes usar el comando específico de pdb p, así:

(Pdb) p a
3
(Pdb) p i
1

Ejecutar la siguiente línea

¿Qué pasa si queremos ejecutar la siguiente línea de código? Hay dos opciones:

Para aclarar: step entra felizmente en una llamada a función y se detiene dentro de esa función. En contraste, next ejecuta la función hasta que retorna, y se detiene en la siguiente línea.

Otros depuradores e IDEs también llaman a esto «step into» (en lugar de step) y «step over» (en lugar de next).

Ahora usemos estos dos:

$ python3 breakpointing.py
-> print(a)
(Pdb) s
3
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) n
-> breakpoint()
(Pdb) n
-> print(a)
(Pdb) n
4
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) s
--Call--
-> def add_two(x):
(Pdb) s
-> return x + 2
(Pdb) s
--Return--
5
-> return x + 2
(Pdb) s
-> breakpoint()
(Pdb)

Como ves, primero pasamos por encima de la llamada a add_two con n. La segunda vez, entramos en la función con s.

Comandos del depurador de Python

Hay más comandos que puedes probar por tu cuenta. No los listaré todos, solo los más útiles:

Para la documentación completa, ve a la página del depurador de Python, donde están listados todos los comandos.

Seguir aprendiendo

Aunque esto puede ser super útil, vale la pena profundizar en el depurador que ofrece tu IDE. Si usas VSCode, escribí un tutorial sobre cómo depurar código Python en VSCode.

Domine la depuración en Python: técnicas eficientes y mejores prácticas

python

  1. Optimizar el Mantenimiento para Impulsar la Eficiencia de la Planta
  2. Domine el Diseño PCB: Consejos Esenciales y Mejores Prácticas para Ingenieros
  3. Acelere la Producción: Cómo el Prototipado Mejora su Proceso de Fabricación
  4. 5 Estrategias Comprobadas para Mejorar la Calidad de Piezas de Chapa Metálica
  5. 3 Estrategias Probadas para Mejorar su Plan de Mantenimiento de Equipos Industriales
  6. Maximice beneficios con la gestión de flotas conectadas ampliada de Ford
  7. Dominando E/S e importación de módulos en Python: Guía práctica
  8. Función print() en Python: Guía Práctica con Ejemplos
  9. Domine las Operaciones de Strings en Python: Replace, Join, Split, Reverse y Conversión de Mayúsculas/Minúsculas
  10. Python time.sleep(): cómo añadir retrasos en tu código (ejemplos)
  11. Print en Python sin salto de línea: dominando el parámetro end y otras técnicas