Como depurar seu código Python

Escrever código que funcione traz uma sensação de realização. Mas geralmente é o oposto quando você encontra erros.

A depuração, entretanto, envolve a remoção de falhas em seu código que fazem seu programa se comportar de maneiras que você não deseja.

E, como acontece com qualquer outra linguagem de programação, os erros podem desperdiçar um tempo valioso durante a programação com Python. Infelizmente, você não pode evitá-los. Então, como você pode entendê-los e lidar com eles? Estas são algumas das melhores maneiras de depurar seu código Python.

O que são exceções do Python?

Sempre que o Python não consegue interpretar um código ou comando, ele levanta uma exceção. As exceções do Python são um conjunto de erros que surgem enquanto o Python executa seu código.

Python levanta exceções para erros usando o bloco try e except . Os comandos executáveis ​​normalmente estão dentro do bloco try .

Mas quando o código dentro de try falha, o Python executa aqueles dentro do bloco except .

Em essência, as instruções dentro da palavra-chave except são as exceções às do bloco try , e o Python as levanta como erros.

Às vezes, um bloco try … except pode conter várias exceções ( exceto palavras-chave). Invariavelmente, isso resulta em uma cadeia de erros. E isso explica os erros detalhados típicos que você às vezes encontra no Python.

Exceções podem surgir quando você usa uma função integrada, uma biblioteca ou uma estrutura Python.

Portanto, mesmo que você escreva a sintaxe correta, a falha em seguir as regras dos métodos que você está tentando usar resulta em exceções, o que pode ser complicado às vezes.

Por exemplo, você pode ter escrito cerca de apenas cinco linhas de código, mas Python verifica com um erro na linha 200.

Isso acontece porque o Python levanta exceções que foram predefinidas no código-fonte da biblioteca, estrutura ou método integrado que você está usando.

Erros de sintaxe

Python gera um erro de sintaxe cada vez que você escreve um código ou uma sintaxe que ele não reconhece. Eles são mais rastreáveis ​​do que exceções em profundidade.

É provável que você encontre erros de sintaxe com mais frequência se for um iniciante em Python. Mas eles são fáceis de lidar, uma vez que você entenda como lidar com eles.

Como depurar seu código Python

Existem várias exceções em Python. Eles podem incluir erros de indentação, tipo e nome, entre outros.

As exceções podem surgir de uma única linha ou de um bloco de código com defeito. Infelizmente, não há maneiras específicas de lidar com exceções. Mas você pode manipulá-los com base em instâncias e tipo de projeto.

Alguns erros também geram várias exceções de uma vez. Por fim, você encontrará esses erros com mais frequência ao criar aplicativos da vida real.

Embora as exceções sejam frustrantes, elas não demoram muito para serem descobertas e resolvidas se você for paciente.

Você pode usar qualquer um ou uma combinação dos seguintes métodos para depurar Python.

1. Verifique a descrição do erro

Uma das melhores maneiras de tratar os erros do Python é verificar a descrição do erro. Python geralmente afirma isso na última linha de sua saída de erro.

Por exemplo, EOF inesperado durante a análise está sempre relacionado à falta de parênteses. No entanto, sintaxe inválida conota uma sintaxe errada em algum lugar, enquanto AttributeError surge quando você tenta chamar uma função errada de uma classe ou um objeto.

Existem muitas outras exceções que você pode encontrar. Simplesmente rastrear a linha de onde eles vêm e reescrever seu código pode ser fundamental.

2. Trace a linha de onde o erro vem

Felizmente, os erros são limitados por linha em Python. Portanto, se você encontrar um erro, preste atenção à linha para a qual o Python está apontando.

Por exemplo, o erro no exemplo abaixo é um erro de tipo porque o código tenta concatenar tipos de dados diferentes (uma string e um inteiro).

Esse erro, no entanto, aponta para a linha 2 no código de exemplo:

Código:

 db = open("output.txt", "a")
a = "Hello"+1
b = "How do you do?"
db.write(a+", "+b+"
")

Erro:

 raceback (most recent call last):
File "C:UsersOmisola IdowuDesktopLato
oup
ew.py", line 2, in
a = "Hello"+1
TypeError: can only concatenate str (not "int") to str

Dê uma olhada em outro exemplo de erro abaixo:

Código:

 def findTotal(a):
for i in a
print(sum(i)*2)

Erro:

 File "C:UsersOmisola IdowuDesktopLato
oup
ew.py", line 2
for i in a
^
SyntaxError: invalid syntax

Aqui, o Python está apontando para um erro de sintaxe na linha 2. Se você estiver familiarizado com o Python, descobrir os dois pontos ausentes após o loop for deve ser fácil.

3. Aproveite o método de rastreamento na linha de comando

Embora você possa depurar Python usando o IDLE integrado, provavelmente não o usará ao trabalhar com projetos maiores.

Portanto, uma das melhores maneiras de depurar o Python é por meio da interface de linha de comando (CLI). É sinônimo de executar console.log () em JavaScript.

Se você encontrar um erro durante a execução do código, pode ativar sua CLI e executar o script com defeito usando o comando trace .

Ele funciona verificando cada linha de seu código e separando-os sempre que encontra um problema.

Para usar este método, execute seu arquivo assim na linha de comando:

 python -m trace --trace file_name.py

Embora não seja prático executar o script inteiro dessa forma, você pode criar um arquivo Python separado, colar cada bloco de código (um de cada vez) nesse arquivo e, em seguida, executar cada código separadamente.

Embora não seja o que você faz durante o teste de unidade, ainda é uma forma de depuração de unidade.

4. Teste seu código

O teste de unidade envolve isolar algumas unidades (blocos ou linhas) em seu código e testá-las quanto a métricas como desempenho, eficiência e exatidão. Você pode pensar nisso como uma forma de garantia de qualidade na programação.

Além das exceções, às vezes pode ocorrer um bug devido a um booleano incorreto, o que pode não gerar um erro, mas pode fazer com que seu programa se comporte de maneira anormal na implantação.

O teste de unidade usa várias técnicas de depuração para testar e definir o perfil de seu código para correção usando a função assert . Ele pode até verificar o tempo que seu código leva para ser executado e assim por diante.

Durante a produção, você pode criar um arquivo Python separado, geralmente chamado de test.py , e testar cada unidade de seu código dentro desse arquivo.

Um teste de unidade pode ser assim:

 data = {
"guitars":[
{"Seagull":"$260"},
{"Fender":"$700"},
{"Electric-acoustic":"$600"}
]
}
if len(data["guitars"])==2:
for i in data["guitars"]:
print(i)
assert len(data["guitars"])==2, "Length less than what's required, should be 3"

Como o comprimento da matriz é menor que 3, o Python gera um erro de asserção:

 AssertionError: Length less than what's required, should be 3

5. Use Loggings

Verificar se há erros usando logs é outra maneira de depurar seu código. Python tem uma biblioteca de registro integrada. Ele funciona detalhando como seu programa é executado no console.

Relacionado: Como enviar mensagens de e-mail automatizadas em Python

O registro, no entanto, é mais útil quando seu programa está em seu estágio de implantação. Mas embora você não possa ver os logs no console quando seu aplicativo estiver em implantação, você pode configurar um protocolo SMTP para obter seus logs de código como um e-mail.

Dessa forma, você sabe em que ponto o programa falha.

6. Use o depurador Python padrão

Python tem um depurador integrado popular chamado pdb . Por ser integrado, basta importar o pdb para o seu arquivo de teste.

O módulo pdb é útil para depurar programas com falhas que terminam abruptamente. O módulo funciona executando seu código post-mortem (mesmo após o travamento do programa).

Você pode executar um arquivo Python inteiro ou sua unidade usando pdb . Depois que o pdb é iniciado, você pode usá-lo para verificar cada linha do seu código para ver onde está o erro.

Para começar a usar o pdb , abra seu arquivo Python e inicie o depurador assim:

 import pdb; pdb.set_trace()

Você pode então executar seu arquivo Python por meio da CLI:

 Python Your_Python_file.py

Você verá o módulo pdb entre parênteses em seu CMD. Digite h para ver uma lista de comandos disponíveis para PDB :

 (pdb) h

A saída é semelhante a esta:

Por exemplo, liste seu código linha por linha, começando do ponto de iniciação:

 (pdb) l

7. Depurar usando IDEs

Os ambientes de desenvolvimento integrado (IDEs) também são ferramentas valiosas para depurar seu script Python.

O Visual Studio Code , por exemplo, com seu recurso Run and Debug e um plug-in de suporte a idiomas chamado Pylance , permite que você execute seu código no modo de depuração. Pycharm é outro excelente IDE que pode ajudá-lo a encontrar falhas em seu código.

Relacionado: Os melhores editores de código gratuitos para escrever seu aplicativo

O Eclipse também oferece um plugin de terceiros chamado Pydev para depurar seus scripts Python facilmente.

8. Pesquise soluções na Internet

A internet também é um recurso confiável que você pode consultar para resolver problemas com seu código Python, graças à comunidade de desenvolvedores Python.

Stackoverflow , por exemplo, é uma comunidade de programação popular onde você pode fazer perguntas e obter respostas. Você até descobrirá que a maioria dos problemas que pode encontrar já tem suas soluções em toda a plataforma.

Além disso, o YouTube contém uma tonelada de vídeos de codificação que você pode aproveitar.

A depuração está além de se livrar de erros

Os erros são parte integrante da codificação, mas saber como lidar com eles faz você se destacar e ajuda a codificar mais rápido. A depuração, entretanto, vai além da remoção de erros. Às vezes, você pode até ter um código funcional com desempenho insatisfatório; procurar maneiras de corrigir os escaninhos também faz parte da depuração.