Êtes-vous un programmeur? Si tel est le cas, le débogage est une compétence essentielle, quel que soit le langage dans lequel vous codez. Dans cet article, vous apprendrez à utiliser le affirmer déclaration en Python pour un débogage efficace.
Lorsque vous travaillez sur un projet, vous définissez plusieurs modules. Cela inclut les fonctions, les définitions de classe, etc. Et vous rencontrerez probablement des erreurs ou des résultats inattendus à cause d'un bogue dans l'implémentation. Les déclarations d'assertion sont utiles pour déboguer ce code.
Dans ce tutoriel, nous allons apprendre la syntaxe pour utiliser l'instruction assert suivie d'exemples de code pour la voir en action. Nous verrons également quelles sont les erreurs d'assertion et comment nous pouvons les utiliser pour corriger les erreurs dans le code pendant le développement.
Commençons!
How to Use the Assert Statement in Python
Nous allons apprendre la syntaxe pour utiliser l'instruction assert, puis procéder au codage de quelques exemples.
Syntaxe de l'instruction Assert
Commençons par la syntaxe pour utiliser l'instruction assert en Python :
assert expression, message
Ici,
expression
est une expression Python valide à évaluer. Cela peut être une condition sur la valeur de la variable, la valeur de vérité de la variable, la valeur de retour d'une fonction, etc.- Tant que le
expression
évalue àTrue
, l'instruction assert ne génère pas d'erreur et ne renvoie rien. Cela indique que le programme fonctionne comme prévu. - Si la
expression
n'est plusTrue
, unAssertionError
exception est levée. message
est un optionnel chaîne. Vous pouvez spécifier un message qui s'affiche dans la trace chaque fois qu'unAssertionError
exception est levée.
Ensuite, passons au code de quelques exemples où l'instruction assert peut nous aider à écrire du code plus propre et sans bogue.
Vous pouvez trouver les exemples de code utilisés dans ce didacticiel dans cet essentiel GitHub.
Python’s Assert Statement Examples

Prenons l'exemple suivant. Dis que tu as un discount
variable dans votre code. Mais vous aimeriez que sa valeur soit toujours inférieure ou égale à max_discount
.
Pour vérifier que vous n'avez pas défini accidentellement le discount
variable à une valeur, vous pouvez ajouter une assertion. L'expression à évaluer est : discount <= max_discount
.
>>> max_discount = 50
>>> discount = 20
>>> assert discount <= max_discount
Ici, discount
(20) est inférieur à max_discount
(50). Ainsi, l'instruction assert ne génère aucune erreur.
L'exception AssertionError
Si la discount
variable est définie sur une valeur supérieure à max_discount
, un AssertionError
exception est levée.
>>> discount = 75
>>> assert discount <= max_discount
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
Nous savons que l'instruction assert nous permet également de spécifier une chaîne de message facultative.
Utilisons également une chaîne de message qui donne des informations de diagnostic plus descriptives. À l'instruction assert, ajoutons une f-string Python qui contient également les valeurs de discount
et max_discount
.
>>> assert discount <= max_discount, f"discount should be at most {max_discount}; got discount = {discount}"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: discount should be at most 50; got discount = 75
Comme on le voit dans la cellule de sortie ci-dessus, le AssertionError
l'exception inclut désormais les valeurs de discount
et max_discount
variables.
Debugging and Testing Python Functions with Assert
Lors de la définition des fonctions, vous pouvez parfois introduire par inadvertance des bogues (erreurs logiques) qui empêcheront votre fonction de fonctionner comme prévu.

Prenons un exemple. Supposons qu'il y ait un test dans une classe et que les élèves aient la possibilité de répondre à une question bonus. Tout étudiant qui tente la question bonus obtiendra 10 points supplémentaires au test. 😄
Considérons la fonction suivante get_final_score
:
- Il prend en compte un score actuel,
score
, et un booléenbonus
. - Si un élève a répondu à la question bonus, le booléen
bonus
isTrue
, et ils obtiennent 10 points de plus que leur score actuel. - La fonction renvoie ensuite le score final.
def get_final_score(score,bonus):
if bonus:
score += 10
return score
Faisons quelques appels à la fonction. On voit que pour les scores de 34 et 40 avec bonus
ajuster à True
et False
, les notes finales sont respectivement de 44 et 40.
print(get_final_score(34,True))
# 44
print(get_final_score(40,False))
# 40
Cependant, le maximum de points au test est, disons, de 50. Ainsi, si un élève obtient 49 points et a également répondu à la question bonus, la fonction get_final_score
se fera un plaisir de calculer le score final à 59.
print(get_final_score(49,True))
# 59
Techniquement, c'est possible. Mais supposons qu'un étudiant ne peut pas marquer plus que le maximum de points possibles pour le test. 🙂
Initialisons donc un max_score
variable. Et capturez le score renvoyé par la fonction dans le final_score
variable.
Ensuite, nous ajoutons une assertion qui vérifie si le final_score
est inférieure à la max_score
.
def get_final_score(score,bonus):
if bonus:
score += 10
return score
final_score = get_final_score(47,True)
max_score = 50
assert final_score <= max_score
Nous obtenons maintenant une exception AssertionError pour l'appel de fonction get_final_score(47,True)
:
Traceback (most recent call last):
File "main.py", line 17, in <module>
assert final_score <= max_score
AssertionError
Nous ajoutons maintenant une chaîne f descriptive à l'instruction assert Python :
assert final_score <= max_score,f"final_score should be at most {max_score}; got {final_score}"
Traceback (most recent call last):
File "main.py", line 17, in <module>
assert final_score <= max_score,f"final_score should be at most {max_score}; got {final_score}"
AssertionError: final_score should be at most 50; got 57
Modification de la fonction
Revenons en arrière et modifions la définition de get_final_score
fonction pour corriger le comportement inattendu :
- La fonction
get_final_score
prend égalementmax_score
en tant que paramètre - Nous vérifions si
bonus
est vrai. Si True, nous ajoutons 10 points à la variable score. - Ensuite, nous vérifions si
score
est supérieuremax_score
. Si c'est le cas, nous revenonsmax_score
. - Sinon, on revient
score
.
Nous nous sommes assurés que le score final est toujours inférieur ou égal à max_score
.
def get_final_score(score,bonus,max_score):
if bonus:
score += 10
if score > max_score:
return max_score
return score
Comme exercice rapide, écrivez quelques assertions pour confirmer que la fonction fonctionne maintenant comme prévu.
A Note on AssertionError Exception
Bien qu'une exception AssertionError se produise lorsque l'expression est évaluée à False, nous devons nous rappeler de ne pas gérer les erreurs telles que exceptions. Ce qui signifie que nous ne devrait pas faire quelque chose comme ça:
try:
<doing this>
except AssertionError:
<do this>
Dans l'exemple précédent sur get_final_score
, nous avons utilisé l'assertion pour vérifier si final_score
est inférieur à max_score
. Ensuite nous modifié la définition de la fonction de sorte qu'il n'y ait pas d'erreurs d'assertion.
C'est ce que l'équipe chez affirmations sont pour. Ce sont des vérifications de cohérence pour le code et aident à écrire un code plus propre. La gestion des exceptions, quant à elle, consiste à anticiper et à gérer les erreurs inattendues lors de l'exécution. Ceux-ci incluent souvent des types et des valeurs d'entrée non valides.
Pour résumer, vous devez utiliser l'instruction Python assert pour un débogage efficace et ne pas gérer les AssertionErrors comme des exceptions.
Conclusion
Ce tutoriel vous a aidé à comprendre comment utiliser l'instruction assert en Python. Voici un résumé de ce que vous avez appris :
- Les déclarations d'assertion Python (assertions) prennent la forme
assert expression
. Ceci vérifie si leexpression
isTrue
. S'il n'est pas évalué àTrue
, unAssertionError
exception est levée. - Vous pouvez également utiliser l'assertion avec la syntaxe
assert expression, message
. Cela imprimera lemessage
chaîne chaque fois qu'unAssertionError
exception se produit. - N'oubliez pas de ne pas implémenter la gestion des exceptions pour gérer les erreurs d'assertion. Et utilisez les assertions comme outil de débogage utile pour vérifier l'intégrité de votre code.
En tant que développeur, les assertions vous aident à déboguer. Pour vous assurer que tous les composants individuels (modules) du projet fonctionnent comme prévu, vous pouvez apprendre à écrire tests unitaires en Python.
Ensuite, consultez cette liste de projets Python débutants vous pouvez travailler.