Palavras-chave: debug, depuração, otimização
Quando estamos desenvolvendo um programa é muito comum ter que colocar código de depuração nele para facilitar nosso trabalho. Ao mesmo tempo esse tipo de código não deveria ser executado nas mãos de nossos clientes.
Alguns programadores resolvem esse problema à sua maneira e acabam perdendo tempo para fazer isso. Em Python não é preciso criar esses mecanismos porque a linguagem já oferece duas ferramentas para lidar com isso: o comando assert
e a variável __debug__
. Vamos ver como usá-los:
def soma(valor): assert valor > 0, "Valor negativo!" soma = 0 for i in range(valor): if __debug__: print 'DEBUG: O valor de i:', i soma += i return soma print soma(2) print soma(-1)
Ao executar esse código teremos:
$ python x.py DEBUG: O valor de i: 0 DEBUG: O valor de i: 1 2 Traceback (most recent call last): File "x.py", line 11, in ? print soma(-1) File "x.py", line 2, in soma assert valor > 0, "Valor negativo!" AssertionError: Valor negativo!
Mas se executamos o mesmo programa com a opção de otimização (-O
) do Python o compilador irá remover todos os comandos assert
e todo o código que estiver dentro de um “if __debug__
“. Como esse código é removido pelo compilador ele sequer será executado pelo interpretador. Veja:
$ python -O x.py 1 0