Las declaraciones de impresión son el tipo de lo peor de ambos mundos, que combina los aspectos negativos de un depurador en línea con la instrumentación de diagnóstico. Tienes que modificar el programa pero no obtienes más, código útil de él.
Un depurador en línea le permite inspeccionar el estado de un programa en ejecución; Pero lo bueno de un depurador real es que no tiene que modificar la fuente; ni antes ni después de la sesión de depuración; Simplemente cargue el programa en el depurador, dígale al depurador dónde desea buscar y ya está todo listo.
La instrumentación de la aplicación puede requerir cierto trabajo por adelantado, modificando el código fuente de alguna manera, pero la salida de diagnóstico resultante puede tener enormes cantidades de detalles y puede activarse o desactivarse en un grado muy específico. El módulo de registro de Python puede mostrar no solo el mensaje registrado, sino también el archivo y la función que lo llamó, un rastreo si hubo uno, el momento real en que se emitió el mensaje, y así sucesivamente.Más que eso; instrumentación de diagnóstico necesita nunca eliminar; Es tan válido y útil cuando el programa está terminado y en producción como el día en que se agregó; pero puede tener su salida atorada en un archivo de registro donde no es probable que moleste a nadie, o el nivel de registro puede ser rechazado para mantener a salvo todos los mensajes más urgentes.
anticipar la necesidad o el uso de un depurador realmente no es más difícil que usar ipython mientras se está probando, y familiarizarse con los comandos que utiliza para controlar el depurador de pdb incorporado.
Cuando se encuentre pensando que una declaración impresa podría ser más fácil que usar pdb (como suele ser), encontrará que usar un registrador hace que su programa sea mucho más fácil de trabajar que si usa y más tarde eliminar declaraciones de impresión.
Tengo mi editor configurado para resaltar las declaraciones de impresión como errores de sintaxis, y las declaraciones de inicio de sesión como comentarios, ya que así es como los considero.
Para grandes proyectos, el registro es siempre una "mejor práctica" porque puede activarlo o desactivarlo fácilmente y obtener más o menos información. print no ofrece ninguna de estas ventajas. –
Ver es decir, http://blog.tplus1.com/index.php/2007/09/28/the-python-logging-module-is-much-better-than-print-statements/ – agf
No creo que haya * ever * el mejor caso de uso para 'print'. – SingleNegationElimination