In Carrière Dernière mise à jourated:
Partager sur:
Logiciel Jira est l'outil de gestion de projet n°1 utilisé par les équipes agiles pour planifier, suivre, publier et prendre en charge d'excellents logiciels.

Ê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 statement en Python pour un débogage efficace.

Lorsque vous travaillez sur un projet, vous définirez plusieurs modules. Cela inclut les fonctions, les définitions de classe, etc. Et vous rencontrerez probablement des erreurs ou des résultats inattendus en raison d'un bug dans l'implémentation. Affirmer stateLes éléments sont utiles pour déboguer un tel code.

Dans ce tutoriel, nous allons apprendre la syntaxe pour utiliser l'assertion statement suivi d'exemples de code pour le voir en action. Nous verrons également ce que sont les erreurs d'assertion et comment nous pouvons les utiliser pour corriger les erreurs de code pendant le développement.

Commençons!

Comment utiliser Assert Statement en Python

Nous allons apprendre la syntaxe pour utiliser l'assertion statement, puis passez au code de quelques exemples.

Syntaxe de l'Assert Statement

Commençons par la syntaxe pour utiliser l'assertion statement en Python :

assert expression, message

Ici,

  • expression est une expression Python valide à évaluerated. Cela peut être une condition sur la valeur d'une variable, la valeur de vérité d'une variable, la valeur de retour d'une fonction, etc.
  • Tant que le expression évaluerates à True, l'affirmation statement ne génère pas d'erreur et ne renvoie rien. Cet indicateurates que le programme fonctionne comme prévu.
  • Si la expression n'est plus True, un AssertionError 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'un AssertionError exception est levée.

Ensuite, passons au code de quelques exemples où l'assertion statement peut nous aider à écrire du code plus propre et sans bug.

Vous pouvez trouver les exemples de code utilisés dans ce didacticiel dans cet essentiel GitHub.

Python's Assert StateExemples de mise en œuvre

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 avez un accidentally ne réglez pas le discount variable à une valeur, vous pouvez ajouter une assertion. L'expression à évaluerate est: discount <= max_discount.

>>> max_discount = 50
>>> discount = 20
>>> assert discount <= max_discount

Ici, discount (20) est inférieur à max_discount (50). Donc l'affirmation statement ne génère aucune erreur.

L'exception AssertionError

Si la discount la variable est définie sur une valeur greater que 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'affirmation statement nous permet également de spécifier une chaîne de message facultative.

Utilisons également une chaîne de message qui donne un plus descriptive informations de diagnostic. À l'affirmation statement, ajoutons une f-string Python qui contient également les valeurs de discount et de 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 de max_discount variables.

Débogage et test des fonctions Python avec Assert

Lors de la définition des fonctions, vous pouvez parfois introduire par inadvertance des bugs (erreurs logiques) quirevempêcher 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éen bonus
  • Si un élève a répondu à la question bonus, le booléen bonus is True, 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 de 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

Techniqueally, c'est possible. Mais supposons qu'un étudiant ne puisse pas obtenir plus que le maximum de points possible au 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

Maintenant, nous ajoutons un descriptive f-string à l'assertion Python statement:

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 également max_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 greater que max_score. Si c'est le cas, nous revenons max_score.
  • Autreswise, nous retournons 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.

Remarque sur l'exception AssertionError

Bien qu'une exception AssertionError se produise lorsque l'expression évalueates à False, nous devons nous rappeler de ne pas gérer des 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 le prevexemple intéressant 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 contrôles d’intégrité du code et aident à écrire un code plus propre. La gestion des exceptions, en revanche, consiste à anticiperate et gérer les erreurs inattendues au moment de l'exécution. Ceux-ci incluent souvent des types et des valeurs d’entrée non valides.

Pour résumer, vous devez utiliser Python assert statement pour un débogage efficace et ne pas gérer les AssertionErrors comme exceptions.

Conclusion

Ce tutoriel vous a aidé à comprendre comment utiliser assert statement en Python. Voici un résumé de ce que vous avez appris :

  • Python affirme stateLes ments (affirmations) prennent la forme assert expression. Ceci vérifie si le expression is True. S'il n'évalue pasate à True, un AssertionError exception est levée.
  • Vous pouvez également utiliser l'assertion avec la syntaxe assert expression, message. Cela imprimera le message chaîne chaque fois qu'un AssertionError 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.

Partager sur:
  • Bala Priya C
    Auteur
    Bala Priya est développeur et technicien writer originaire d'Inde avec plus de trois ans d'expérience dans le domaine de la rédaction de contenu technique. Elle partage son apprentissage avec la communauté des développeurs en créant des didacticiels techniques, des guides pratiques, et bien plus encore….

Merci à nos commanditaires

Plus de bonnes lectures sur le développement

Alimentez votre entreprise

Certains des outils et services pour aider votre entreprise grow.
  • L'outil de synthèse vocale qui utilise l'IA pour générerate des voix humaines réalistes.

    Essayez Murf AI
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.

    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.

    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.

    Essayez Intruder