As declarações impressas são o pior dos dois mundos , combinando os aspectos negativos de um depurador online com instrumentação de diagnóstico. Você tem que modificar o programa, mas não obtém mais códigos úteis dele.
Um depurador online permite que você inspecione o estado de um programa em execução; Mas o bom de um depurador real é que você não precisa modificar o código-fonte; nem antes nem depois da sessão de depuração; Você apenas carrega o programa no depurador, diz ao depurador onde deseja olhar e está tudo pronto.
Instrumentar o aplicativo pode exigir algum trabalho inicial, modificar o código-fonte de alguma forma, mas a saída de diagnóstico resultante pode ter uma quantidade enorme de detalhes e pode ser ativada ou desativada em um grau muito específico. O módulo de registro do python pode mostrar não apenas a mensagem registrada, mas também o arquivo e a função que a chamou, um rastreamento, se houver, a hora real em que a mensagem foi emitida e assim por diante. Mais que isso; necessidade de instrumentação de diagnóstico nunca ser removida; É tão válido e útil quando o programa está concluído e em produção quanto no dia em que foi adicionado; mas pode ter sua saída presa em um arquivo de log, onde provavelmente não incomodará ninguém, ou o nível de log pode ser reduzido para manter todas as mensagens, exceto as mais urgentes.
prever a necessidade ou o uso de um depurador não é realmente mais difícil do que usar ipython durante o teste e se familiarizar com os comandos que ele usa para controlar o depurador pdb embutido.
Quando você se pegar pensando que uma instrução de impressão pode ser mais fácil do que usar pdb (como costuma ser), você descobrirá que usar um logger torna seu programa muito mais fácil de trabalhar do que se você usar e remover posteriormente as instruções de impressão .
Tenho meu editor configurado para destacar as instruções de impressão como erros de sintaxe e as instruções de registro como comentários, uma vez que é assim que as vejo.