Comment déboguer votre code Python
Écrire du code qui fonctionne apporte un sentiment d'accomplissement. Mais c'est souvent le contraire lorsque vous rencontrez des erreurs.
Le débogage, cependant, implique la suppression des défauts dans votre code qui font que votre programme se comporte d'une manière que vous n'en avez pas l'intention.
Et comme pour tout autre langage de programmation, les erreurs peuvent faire perdre un temps précieux lors du codage avec Python. Malheureusement, vous ne pouvez pas les éviter. Alors comment les comprendre et les gérer ? Ce sont quelques-unes des meilleures façons de déboguer votre code Python.
Que sont les exceptions Python ?
Chaque fois que Python ne peut pas interpréter un code ou une commande, il lève une exception. Les exceptions Python sont un ensemble d'erreurs qui surviennent pendant que Python exécute votre code.
Python lève des exceptions pour les erreurs en utilisant le bloc try et except . Les commandes exécutables se trouvent généralement à l'intérieur du bloc try .
Mais lorsque le code à l'intérieur de try échoue, Python exécute ceux à l'intérieur du bloc except .
Essentiellement, les instructions à l'intérieur du mot-clé except sont les exceptions à celles du bloc try , et Python les génère comme des erreurs.
Parfois, un bloc try…except peut contenir plusieurs exceptions ( sauf des mots-clés). Invariablement, cela se traduit par une chaîne d'erreurs. Et cela explique les erreurs détaillées typiques que vous rencontrez parfois en Python.
Des exceptions peuvent survenir lorsque vous utilisez une fonction intégrée, une bibliothèque ou un framework Python.
Ainsi, même si vous écrivez la syntaxe correcte, le non-respect des règles des méthodes que vous essayez d'utiliser entraîne des exceptions, qui peuvent parfois devenir écrasantes.
Par exemple, vous n'avez peut-être écrit que cinq lignes de code, mais Python s'enregistre avec une erreur à la ligne 200.
Cela se produit parce que Python déclenche des exceptions qui ont été prédéfinies dans le code source de la bibliothèque, du framework ou de la méthode intégrée que vous utilisez.
Erreurs de syntaxe
Python génère une erreur de syntaxe chaque fois que vous écrivez un code ou une syntaxe qu'il ne reconnaît pas. Elles sont plus traçables que les exceptions approfondies.
Vous êtes susceptible de rencontrer plus souvent des erreurs de syntaxe si vous êtes un débutant Python. Mais ils sont faciles à gérer une fois que vous comprenez comment les gérer.
Comment déboguer votre code Python
Il existe plusieurs exceptions en Python. Ils peuvent inclure des erreurs d'indentation, de type et de nom, entre autres.
Les exceptions peuvent émaner d'une seule ligne ou d'un bloc de code défectueux. Malheureusement, il n'y a pas de manière spécifique de gérer les exceptions. Mais vous pouvez les gérer en fonction des instances et du type de projet.
Certaines erreurs soulèvent également plusieurs exceptions à la fois. En fin de compte, vous rencontrerez ces erreurs plus souvent lors de la création d'applications réelles.
Bien que les exceptions soient frustrantes, elles ne demandent pas grand-chose à comprendre et à résoudre si vous êtes patient.
Vous pouvez utiliser n'importe laquelle ou une combinaison des méthodes suivantes pour déboguer Python.
1. Vérifiez la description de l'erreur
L'un des meilleurs moyens de traiter les erreurs Python est de vérifier la description de l'erreur. Python indique généralement cela sur la dernière ligne de votre sortie d'erreur.
Par exemple, un EOF inattendu lors de l'analyse est toujours lié à une parenthèse manquante. Cependant, une syntaxe invalide connote une mauvaise syntaxe quelque part, tandis qu'AttributeError apparaît lorsque vous essayez d'appeler une mauvaise fonction à partir d'une classe ou d'un objet.
Il existe de nombreuses autres exceptions que vous pouvez rencontrer. Tracer simplement la ligne d'où ils viennent et réécrire votre code peut être la clé.
2. Tracez la ligne d'où vient l'erreur
Heureusement, les erreurs sont liées à la ligne en Python. Donc, si vous rencontrez une erreur, faites attention à la ligne vers laquelle Python pointe.
Par exemple, l'erreur dans l'exemple ci-dessous est une erreur de type car le code essaie de concaténer des types de données différents (une chaîne et un entier).
Cette erreur, cependant, pointe vers la ligne 2 dans l'exemple de code :
Code:
db = open("output.txt", "a")
a = "Hello"+1
b = "How do you do?"
db.write(a+", "+b+"
")
Erreur:
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
Jetez un œil à un autre exemple d'erreur ci-dessous :
Code:
def findTotal(a):
for i in a
print(sum(i)*2)
Erreur:
File "C:UsersOmisola IdowuDesktopLato
oup
ew.py", line 2
for i in a
^
SyntaxError: invalid syntax
Ici, Python pointe vers une erreur de syntaxe à la ligne 2. Si vous êtes familier avec Python, trouver les deux points manquants après la boucle for devrait être facile.
3. Tirez parti de la méthode de trace sur la ligne de commande
Bien que vous puissiez déboguer Python à l'aide de l'IDLE intégré, vous ne l'utiliserez probablement pas lorsque vous travaillerez sur des projets plus importants.
Ainsi, l'un des meilleurs moyens de déboguer Python consiste à utiliser l'interface de ligne de commande (CLI). C'est synonyme d'exécution de console.log() en JavaScript.
Si vous rencontrez une erreur lors de l'exécution du code, vous pouvez lancer votre CLI et exécuter le script défectueux à l'aide de la commande trace .
Cela fonctionne en exécutant une vérification sur chaque ligne de votre code et en interrompant chaque fois qu'il trouve un problème.
Pour utiliser cette méthode, exécutez votre fichier comme ceci dans votre ligne de commande :
python -m trace --trace file_name.py
Bien qu'il ne soit pas pratique d'exécuter l'intégralité de votre script comme celui-ci, vous pouvez créer un fichier Python distinct, coller chaque bloc de code (un à la fois) dans ce fichier, puis exécuter chaque code séparément.
Bien que ce ne soit pas ce que vous faites pendant les tests unitaires, il s'agit toujours d'une forme de débogage unitaire.
4. Testez votre code
Les tests unitaires consistent à isoler certaines unités (blocs ou lignes) dans votre code et à les tester pour des métriques telles que les performances, l'efficacité et l'exactitude. Vous pouvez considérer cela comme une forme d'assurance qualité dans la programmation.
En plus des exceptions, un bogue peut parfois se produire en raison d'un booléen erroné, ce qui peut ne pas générer d'erreur, mais peut entraîner un comportement anormal de votre programme lors du déploiement.
Les tests unitaires utilisent plusieurs techniques de débogage pour tester et profiler l'exactitude de votre code à l'aide de la fonction assert . Il peut même vérifier le temps qu'il faut à votre code pour s'exécuter et ainsi de suite.
Pendant la production, vous pouvez créer un fichier Python distinct, généralement appelé test.py , et tester chaque unité de votre code à l'intérieur de ce fichier.
Un test unitaire peut ressembler à ceci :
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"
Comme la longueur du tableau est inférieure à 3, Python génère une erreur d'assertion :
AssertionError: Length less than what's required, should be 3
5. Utiliser les journaux
La recherche d'erreurs à l'aide des journaux est un autre moyen de déboguer votre code. Python a une bibliothèque de journalisation intégrée . Cela fonctionne en détaillant comment votre programme s'exécute dans la console.
La journalisation, cependant, est plus utile lorsque votre programme est dans sa phase de déploiement. Mais bien que vous ne puissiez pas afficher les journaux dans la console lorsque votre application est en déploiement, vous pouvez configurer un protocole SMTP (Simple Mail Transfer Protocol) pour obtenir vos journaux de code sous forme de courrier électronique.
De cette façon, vous savez à quel moment votre programme échoue.
6. Utilisez le débogueur Python standard
Python a un débogueur embarqué populaire appelé pdb . Parce qu'il est intégré, le simple fait d'importer pdb dans votre fichier de test fonctionne.
Le module pdb est utile pour déboguer les programmes en panne qui se terminent brusquement. Le module fonctionne en exécutant votre code post-mortem (même après le crash de votre programme).
Vous pouvez exécuter un fichier Python entier ou son unité à l'aide de pdb . Une fois que pdb démarre, vous pouvez l'utiliser pour vérifier chaque ligne de votre code pour voir où se trouve l'erreur.
Pour commencer avec pdb , ouvrez votre fichier Python et lancez le débogueur comme ceci :
import pdb; pdb.set_trace()
Vous pouvez ensuite exécuter votre fichier Python via la CLI :
Python Your_Python_file.py
Vous verrez le module pdb entre parenthèses dans votre CMD. Tapez h pour afficher une liste des commandes disponibles pour pdb :
(pdb) h
La sortie ressemble à ceci :
Par exemple, répertoriez votre code ligne par ligne en commençant par le point d'initiation :
(pdb) l
7. Déboguer à l'aide d'IDE
Les environnements de développement intégrés (IDE) sont également des outils précieux pour déboguer votre script Python.
Visual Studio Code , par exemple, avec sa fonctionnalité Run and Debug et un plugin de support de langage appelé Pylance , vous permet d'exécuter votre code en mode débogage. Pycharm est un autre excellent IDE qui peut vous aider à trouver des défauts dans votre code.
Eclipse propose également un plugin tiers appelé Pydev pour déboguer facilement vos scripts Python.
8. Recherchez des solutions sur Internet
Internet est également une ressource fiable sur laquelle vous pouvez vous tourner pour résoudre les problèmes avec votre code Python, grâce à la communauté des développeurs Python.
Stackoverflow , par exemple, est une communauté de codage populaire où vous pouvez poser des questions et obtenir des réponses. Vous constaterez même que la plupart des problèmes que vous pouvez rencontrer ont déjà leurs solutions sur toute la plate-forme.
De plus, YouTube contient une tonne de vidéos de codage que vous pouvez exploiter.
Le débogage va au-delà de l'élimination des erreurs
Les erreurs font partie intégrante du codage, mais savoir comment les gérer vous permet de vous démarquer et vous aide à coder plus rapidement. Le débogage, cependant, va au-delà de la suppression des erreurs. Parfois, vous pouvez même avoir un code qui fonctionne mal ; la recherche de moyens de rectifier les casiers fait également partie du débogage.