notes d'étude python - débogage python

黄舟
Libérer: 2017-01-17 14:21:54
original
1084 Les gens l'ont consulté

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')
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

Nous pouvons utiliser

logging.basicConfig(level=logging.DEBUG)
Copier après la connexion

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 (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!