Lorsque nous écrivons du code, nous commettons souvent beaucoup d'erreurs. Comment pouvons-nous déboguer cela ?
Imprimer avec l'instruction print
Nous pouvons utiliser l'instruction print pour imprimer ce que nous voulons, puis l'afficher dans la sortie.
imprimer "hah"
Mais après le débogage, nous devons toujours supprimer manuellement l'instruction d'impression, ce qui est plus gênant.
assert
Là où print a été utilisé précédemment, nous pouvons utiliser l'instruction assert à la place. Par exemple :
def foo(s): s = int(s) assert s != 0, "s is Zero" return 10.0 / s foo('0')
L'instruction assert est suivie d'une instruction de jugement puis du message d'erreur. Si l'instruction de jugement ne correspond pas, une AssertionError sera levée. Par exemple :
Traceback (most recent call last): File "/Users/W/Code/Python/Demo/AssertDemo.py", line 7, in foo('0') File "/Users/W/Code/Python/Demo/AssertDemo.py", line 3, in foo assert s != 0, "s is Zero" AssertionError: s is Zero
Nous pouvons désactiver uniformément l'assertion avec le paramètre -o pendant l'exécution. Après la fermeture, l'instruction assert ne prendra plus effet.
logging
Vous pouvez remplacer l'instruction d'impression par la journalisation. La journalisation ne renvoie pas de messages d'erreur comme le fait assert. La journalisation présente de nombreux avantages. L’un d’entre eux est qu’elle peut être personnalisée pour générer un niveau d’informations spécifique.
Level: CRITICAL Numeric value: 50 Level: ERROR Numeric value: 40 Level: WARNING Numeric value: 30 Level: INFO Numeric value: 20 Level: DEBUG Numeric value: 10 Level: NOTSET Numeric value: 0
Nous pouvons utiliser
logging.basicConfig(level=logging.DEBUG)
pour configurer simplement la journalisation. Les avertissements inférieurs à ce niveau seront ignorés. De plus, nous pouvons également configurer l'emplacement de la sortie de journalisation, par exemple si elle est sortie vers la console ou vers un certain fichier de débogage. Pour plus de configuration de journalisation, vous pouvez lire : https://segmentfault.com/a/11….
Debugger pdb, le débogueur python
pdb est démarré en tant que
python -m pdb test.py
Commandes couramment utilisées pour pdb
n : Suivant, utilisée pour exécuter l'étape suivante
l : Ce devrait être une liste, vérifiez le code à exécuter ci-dessous
p Nom de la variable : p doit être la première lettre du paramètre, vérifier la valeur d'une certaine variable
q : quitter, quitter le programme
pdb peut contrôler l'exécution étape par étape de python, et est théoriquement un débogueur universel. Mais lorsqu’il s’agit de codes très longs, cela semble inefficace. En analysant nos besoins, nous devons en fait définir des points d'arrêt à certains points clés afin de pouvoir examiner les résultats de l'exécution au lieu d'examiner chaque étape comme auparavant. Ensuite, jetons un coup d'œil à pdb.set_trace().
pdb.set_trace()
Il suffit d'écrire une ligne de code où le programme est en pause :
pdb.set_trace()
Lorsque l'éditeur Python rencontre pdb.set_trace(), le programme se mettra en pause et nous pourrons utiliser la commande pdb mentionnée ci-dessus. vérifiez les valeurs de chaque paramètre.
Bien sûr, de nombreux IDE modernes tels que Pycharm fournissent de nombreux outils de débogage visuel pratiques, qui peuvent être facilement utilisés.
Ce qui précède est le contenu des notes d'étude python-débogage python. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !