Les instructions d'impression sont en quelque sorte le le pire des deux mondes en combinant les aspects négatifs d'un débogueur en ligne avec une instrumentation de diagnostic. Vous devez modifier le programme mais tu n'auras pas plus de code utile d'elle.
Un débogueur en ligne vous permet d'inspecter l'état d'un programme en cours d'exécution. Mais ce qu'il y a de bien avec un vrai débogueur, c'est qu'il n'est pas nécessaire de modifier le code source, ni avant ni après la session de débogage ; il suffit de charger le programme dans le débogueur, d'indiquer au débogueur où vous voulez regarder, et le tour est joué.
L'instrumentation de l'application peut nécessiter un certain travail au départ, en modifiant le code source d'une manière ou d'une autre, mais la sortie de diagnostic qui en résulte peut contenir d'énormes quantités de détails, et peut être activée ou désactivée à un degré très spécifique. Le module de journalisation de python peut montrer non seulement le message enregistré, mais aussi le fichier et la fonction qui l'a appelé, une traceback s'il y en a une, l'heure réelle à laquelle le message a été émis, et ainsi de suite. Plus que cela, l'instrumentation de diagnostic doit jamais Il est tout aussi valable et utile lorsque le programme est terminé et en production qu'il l'était le jour où il a été ajouté ; mais sa sortie peut être placée dans un fichier journal où elle ne risque pas d'ennuyer quelqu'un, ou le niveau du journal peut être réduit pour ne laisser passer que les messages les plus urgents.
Anticiper la nécessité ou l'utilisation d'un débogueur n'est pas vraiment plus difficile que d'utiliser ipython pendant les tests et de se familiariser avec les commandes qu'il utilise pour contrôler le débogueur pdb intégré.
Lorsque vous pensez qu'une instruction d'impression pourrait être plus facile que d'utiliser pdb (comme c'est souvent le cas), vous constaterez que l'utilisation d'un logger place votre programme dans un état beaucoup plus facile à travailler que si vous utilisez et supprimez plus tard les instructions d'impression.
J'ai configuré mon éditeur pour qu'il mette en évidence les instructions d'impression comme suit erreurs de syntaxe et à enregistrer les déclarations en tant que commentaires, puisque c'est à peu près ainsi que je les considère.
17 votes
Pour les grands projets, la journalisation est toujours une "meilleure pratique" car vous pouvez facilement l'activer ou la désactiver, et obtenir plus ou moins d'informations. L'impression n'offre aucun de ces avantages.
1 votes
Voir i.e. blog.tplus1.com/index.php/2007/09/28/
3 votes
Je ne pense pas qu'il y ait jamais un meilleur cas d'utilisation pour
print
.8 votes
El documentation sur la journalisation en python dit que le meilleur cas d'utilisation pour
print
est d'afficher des messages d'aide pour l'utilisateur dans une application de ligne de commande.1 votes
En lisant toutes ces réponses, j'ai envie de poser la question inverse : y a-t-il jamais une raison de pas utiliser l'enregistrement ?