Débogage en Python

En mentionnant débogage, cela signifie qu'il peut y avoir un punaise au milieu. Eh bien, je ne veux pas dire un bug que l'on pourrait trouver dans une maison, mais un bug de programmation!

Avant d'aller plus loin avec ce tutoriel, voyons quelques termes. Définissons brièvement ce que nous entendons par punaise et débogage

Bogues

Un bug informatique pourrait survenir à la fois dans les logiciels et dans le matériel, mais nous nous concentrons ici sur les logiciels. Permettez-moi de mentionner rapidement une croyance sur où le terme punaise aurait pu provenir. On pense que la première utilisation du terme punaise en informatique était quand un réal Un bug (papillon de nuit) a été trouvé dans l’un des relais de l’ordinateur Mark II. Le terme punaise a également été utilisé à la fin du 19ème siècle pour décrire des problèmes techniques.

Les bogues logiciels provoquent un comportement inattendu du programme. C’est un terme couramment utilisé pour désigner un Erreur avec un emplacement et une raison inconnus, et ils peuvent causer des problèmes graves (par exemple, le crash d’un programme).

Dans cette situation, débogage entre en jeu.

Débogage

Eh bien, on peut dire que le meilleur moyen d'éviter tout problème est de ne pas générer de bugs en premier lieu. Mais c'est malheureusement assez rare et il n'est pas facile de générer un programme propre dès le début. Avoir des insectes est une situation normale dans laquelle vous tomberiez.

Débogage est le processus de localisation, d’analyse et de correction de tout bogue (erreur) que vous pourriez rencontrer. Le but ultime du débogage est de supprimer ces bogues et de produire un programme qui s'exécute et se comporte comme prévu. Il est important de noter ici que la plupart du temps sera consacré à la localisation du bogue car, comme nous l’avons mentionné ci-dessus, il a été localisé à l’origine..

Pour avoir une idée de la difficulté du débogage, voyez ce que Brian W. Kernighan avait à dire:

Tout le monde sait que déboguer est deux fois plus difficile que d'écrire un programme. Donc, si vous êtes aussi intelligent que vous le pouvez lorsque vous l'écrivez, comment allez-vous le déboguer??

Gestion des exceptions Python

Un exception est un objet qui indique que nous avons un bug (erreur). En d'autres termes, Python utilise des exceptions afin de signaler l'existence de bogues dans le programme. Ce serait le localisation partie du processus de débogage. Recevoir l'objet exception et effectuer les actions nécessaires pour traiter le bogue fait référence à manipulation l'éxéption. Ce serait le en cours d'analyse et corriger étapes du processus de débogage.

La déclaration d'essai

De python essayer instruction est utilisée pour la gestion des exceptions et se présente sous deux formes: essayer / sauf et essayer / enfin. Dans le premier cas, le essayer clause peut être suivie d'un ou de plusieurs sauf clauses, alors que dans ce dernier cas, il ne peut être suivi que d'un seul enfin clause.

essayer / sauf

le essayer / sauf La syntaxe est la suivante:

try: # essayez le code de bloc sauf: # sauf le code de bloc

Le corps du essayer La clause contiendra du code susceptible de générer une exception, à condition que si une exception est générée, toutes les instructions du bloc sont ignorées. D'autre part, le corps de la sauf la clause est appelée la gestionnaire d'exception, comme il est utilisé pour attraper l'exception. le sauf Le code de bloc ne sera exécuté que si une exception a été générée, sinon le bloc sera sauté. Vous pouvez utiliser les exceptions intégrées, comme indiqué dans la bibliothèque Python Standard.. 

Prenons un exemple pour clarifier les choses. Supposons qu'on nous demande d'entrer un dénominateur dans une formule de division. Puisque la division par zéro n’est pas autorisée, écrivons un essayer / sauf instruction qui vérifie s'il y a une division par zéro et affiche un message si cette erreur se produit.

dénominateur = entrée ('Entrez une valeur de dénominateur:') essayez: formula = 15 / dénominateur print 'Le résultat est' + str (formule) sauf ZeroDivisionError: print 'Vous avez tenté de diviser par zéro, ce qui n'est pas autorisé. 

Si vous entrez la valeur 5, par exemple, vous obtiendrez le résultat suivant:

Le résultat est 3

Maintenant, essayez d'entrer la valeur 0 en entrée. Quelle sortie obtiendrez-vous dans ce cas?

essayer / enfin

essayer / enfin est un autre moyen d'écrire l'instruction try en Python. enfin les clauses sont appelées nettoyage / résiliation clauses car elles doivent toujours être exécutées, qu’une exception se produise ou non essayer bloc.

Essayons l'exemple dans la section ci-dessus, mais avec le enfin clause:

dénominateur = entrée ('Entrez une valeur de dénominateur:') essayez: formule = 15 / dénominateur print 'Le résultat est' + str (formule) finally: print 'Vous avez tenté de diviser par zéro, ce qui n'est pas autorisé' 

Notez que lorsque vous entrez la valeur 5 en entrée, par exemple, vous obtiendrez le résultat suivant:

Le résultat est 3 Vous avez tenté de diviser par zéro, ce qui n'est pas autorisé

La relance

le élever mot-clé est un autre moyen de gérer les exceptions en Python. Dans ce cas, vous pourrez créer vos propres exceptions, c'est-à-dire des exceptions qui sont générées lorsqu'un problème ne se situant pas dans le champ des erreurs attendues se produit..

Regardons un exemple d'utilisation de la élever mot clé pour mieux comprendre le concept.

try: x = input ('Entrez un nombre compris entre 1 et 10:') si x<1 or x>10: augmenter l'exception print 'Great! Vous m'avez écouté et avez entré un numéro valide 'sauf: print' Votre numéro semble être en dehors de la plage 1-10 '

Dans cet exemple, si vous entrez un nombre en dehors de la plage autorisée, le impression déclaration dans le sauf le bloc sera exécuté.

Allez-y, essayez quelques valeurs et vérifiez le résultat.

Le module de retraçage

De python retraçage module est un autre moyen de gérer les exceptions en Python. Il est essentiellement utilisé pour imprimer les traces de pile d'un programme après qu'une exception se soit produite. le retraçage contient le message d'erreur, le numéro de la ligne qui a provoqué l'erreur et le pile d'appels, c'est la séquence des appels de fonction qui a conduit à l'erreur.

Prenons un exemple qui génère un retraçage:

def createException (nom): soulève une exception ('Il semble que' + nom + 'a déclenché une exception') createException ('Abder')

Si vous exécutez ce script, vous obtiendrez une sortie qui se présente comme suit:

Traceback (appel le plus récent en dernier): fichier "test.py", ligne 4, dans  createException ('Abder') Fichier "test.py", ligne 2, dans createException raise Exception ('Il semble que' + nom + 'a généré une exception') Exception: Il semble qu'Abder a généré une exception

Notez que le bogue (erreur) s'est produit le ligne 2 dans le createException une fonction. Notez également que la pile d’appel peut nous aider à déterminer quel appel a conduit à l’erreur, qui dans ce cas est l’appel qui a eu lieu dans ligne 4.

Le tutoriel est de plus en plus long et je voudrais m'arrêter ici. Comme vous l'avez vu, le débogage de programmes est une chose naturelle et régulière à faire, et je pense que les types d'erreurs que vous avez vues dans ce tutoriel vous semblent familiers, n'est-ce pas??

Il existe d'autres moyens de déboguer un programme Python et de gérer les exceptions. Un moyen bien connu, par exemple, est le affirmation déclaration

Bon débogage!