0% ont trouvé ce document utile (0 vote)
5 vues19 pages

Gestion des Exceptions en Python

Le document traite des exceptions en Python, en expliquant leur importance pour la gestion des erreurs et la robustesse des programmes. Il présente le bloc try-except pour capturer les erreurs, ainsi que le bloc finally pour exécuter du code indépendamment des erreurs. Enfin, il aborde la création et l'importation de modules, ainsi que l'utilisation de modules intégrés pour faciliter le développement.

Transféré par

safae eljaafari
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues19 pages

Gestion des Exceptions en Python

Le document traite des exceptions en Python, en expliquant leur importance pour la gestion des erreurs et la robustesse des programmes. Il présente le bloc try-except pour capturer les erreurs, ainsi que le bloc finally pour exécuter du code indépendamment des erreurs. Enfin, il aborde la création et l'importation de modules, ainsi que l'utilisation de modules intégrés pour faciliter le développement.

Transféré par

safae eljaafari
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

02/03/2025

Les Exceptions en Python

Pr. MERZOUK Soukaina 437

437

Les Exceptions en Python


Les erreurs font partie du quotidien du développeur
Il existe deux grandes catégories d'erreurs en programmation :
Les erreurs dues aux données incorrectes
Par exemple, si le programme attend un nombre entier et que
l'utilisateur entre du texte, cela peut provoquer une erreur.
Ce type d'erreur est souvent causé par un mauvais format des
données d'entrée.

Pr. MERZOUK Soukaina 438

438
02/03/2025

Les Exceptions en Python


Les erreurs font partie du quotidien du développeur
Il existe deux grandes catégories d'erreurs en programmation :
Les erreurs dues aux bugs dans le code
Ces erreurs sont introduites par le développeur lui-même, soit par
inadvertance, soit par manque de compréhension de la logique.
Elles peuvent provoquer des comportements inattendus, voire
l'arrêt complet du programme.
La meilleure manière de gérer ces erreurs est d'apprendre à
anticiper et traiter les exceptions de manière élégante.
Pr. MERZOUK Soukaina 439

439

Pourquoi gérer les erreurs ?


Importance de la gestion des erreurs
Éviter les crashs imprévus.
Améliorer l’expérience utilisateur.
Faciliter le débogage et la maintenance.
Rendre le code plus robuste et professionnel.

Pr. MERZOUK Soukaina 440

440
02/03/2025

Quand les données ne sont pas ce


qu'elles devraient être
Exemple
value = int(input("Entrez un nombre naturel : "))
print("Son inverse est :", 1 / value)
Problèmes possibles :
Si l'utilisateur entre un texte au lieu d'un nombre, le programme
plantera avec une ValueError.
Si l'utilisateur entre 0, cela provoquera une ZeroDivisionError.
Si l'utilisateur ne tape rien et appuie sur Entrée, il y aura aussi une
erreur.
Pr. MERZOUK Soukaina 441

441

Quand les données ne sont pas ce


qu'elles devraient être
Exemple d'erreur affichée dans le terminal :
Traceback (most recent call last):
File "[Link]", line 1, in <module>
value = int(input('Enter a natural number: '))
ValueError: invalid literal for int() with base 10: ''
Pour éviter ces problèmes, on pourrait vérifier manuellement que
l'entrée est bien un entier valide.
Cependant, Python recommande une autre approche : les exceptions.

Philosophie en Python : "Mieux vaut gérer l’erreur que l’éviter"


Pr. MERZOUK Soukaina 442

442
02/03/2025

Le bloc try-except
Qu’est-ce qu’une exception ?
Une exception est une erreur interceptable pendant l’exécution
du programme.
Python permet de gérer ces erreurs avec le bloc try-except.
Principe :
try : contient le code "risqué" susceptible de provoquer une
erreur.
except : capture l'exception si une erreur se produit et permet de
réagir.
Pr. MERZOUK Soukaina 443

443

Le bloc try-except
Tableau des exceptions courantes en Python
Exception Cause
ZeroDivisionError Division par zéro
ValueError Conversion invalide (ex : int("abc"))
TypeError Opération avec des types incompatibles ("text" + 5)
Index hors limite d'une liste (list[10] si la liste a 5
IndexError
éléments)
Clé inexistante dans un dictionnaire
KeyError
(dict["clé_absente"])
Fichier introuvable (open("[Link]") si le fichier
FileNotFoundError
n'existe pas)
Pr. MERZOUK Soukaina 444

444
02/03/2025

Le bloc try-except
Exemple avec try-except :
try:
value = int(input("Entrez un nombre naturel : "))
print("Son inverse est :", 1 / value)
except ValueError:
print("Erreur : Vous devez entrer un nombre
entier.")
except ZeroDivisionError:
print("Erreur : Impossible de diviser par zéro.")

Pr. MERZOUK Soukaina 445

445

Le bloc try-except
Exemple avec try-except :
Comment ça fonctionne ?
Python exécute les instructions dans le bloc try.
Si une erreur survient, Python interrompt immédiatement le bloc
try et cherche un bloc except correspondant.
Si l'exception correspond, le code du except est exécuté.
Le programme ne s'arrête pas brutalement et peut continuer
après l'exception.

Pr. MERZOUK Soukaina 446

446
02/03/2025

Le bloc try-except
Exemples de scénarios :
Entrée : "abc"
Sortie : "Erreur : Vous devez entrer un nombre entier."

Entrée : "0"
Sortie : "Erreur : Impossible de diviser par zéro."

Entrée : "4"
Sortie : "Son inverse est : 0.25"
Pr. MERZOUK Soukaina 447

447

Une exception prouve la règle


Il est important de noter que seules les erreurs qui se produisent dans
le bloc try sont capturées.
Exemple :
try:
value = int(input("Entrez un nombre : "))
print("Son inverse est :", 1 / value)
except ValueError:
print("Erreur : Entrée invalide.")
print("Fin du programme.")
Pr. MERZOUK Soukaina 448

448
02/03/2025

Une exception prouve la règle


Cas d’exécution :
Entrée : "xyz"
Sortie : "Erreur : Entrée invalide."
"Fin du programme."

Entrée : "2"
Sortie : "Son inverse est : 0.5"
"Fin du programme."
Remarque : Même après une erreur, le programme continue son
exécution après le except.
Pr. MERZOUK Soukaina 449

449

Gérer plusieurs exceptions


Si plusieurs types d’erreurs peuvent survenir, on peut gérer chaque cas
séparément.
Méthode 1 : Plusieurs blocs except
try:
value = int(input("Entrez un nombre naturel : "))
print("Son inverse est :", 1 / value)
except ValueError:
print("Erreur : Vous devez entrer un nombre entier.")
except ZeroDivisionError:
print("Erreur : Impossible de diviser par zéro.")
except Exception as e: # Capture toute autre erreur inattendue
print(f"Une erreur inattendue est survenue : {e}")
Pr. MERZOUK Soukaina 450

450
02/03/2025

Gérer plusieurs exceptions


Méthode 2 : Capturer plusieurs exceptions dans un même bloc
try:
value = int(input("Entrez un nombre naturel : "))
print("Son inverse est :", 1 / value)
except (ValueError, ZeroDivisionError) as e:
print("Erreur :", e)
Différence :
La première méthode traite chaque erreur individuellement.
La seconde regroupe plusieurs erreurs sous un même message.

Pr. MERZOUK Soukaina 451

451

Le bloc finally : Exécuter du code quoi


qu’il arrive
Le bloc finally permet d'exécuter un code même si une erreur se produit.
try:
value = int(input("Entrez un nombre : "))
print("Son inverse est :", 1 / value)
except ValueError:
print("Erreur : Entrée invalide.")
except ZeroDivisionError:
print("Erreur : Impossible de diviser par zéro.")
finally:
print("Ce message s'affiche toujours, erreur ou
pas.")
Pr. MERZOUK Soukaina 452

452
02/03/2025

Le bloc finally : Exécuter du code quoi


qu’il arrive
Scénarios d'exécution :
Entrée : "abc"
Sortie : "Erreur : Entrée invalide."
"Ce message s'affiche toujours, erreur ou pas."

Entrée : "0"
Sortie : "Erreur : Impossible de diviser par zéro."
"Ce message s'affiche toujours, erreur ou pas."

Entrée : "4"
Sortie : "Son inverse est : 0.25"
Pr. MERZOUK Soukaina "Ce message s'affiche toujours, erreur ou pas." 453

453

Le bloc finally : Exécuter du code quoi


qu’il arrive
Le finally est utile pour :
Fermer un fichier après son utilisation.
Libérer des ressources (connexions réseau, base de données).
Effectuer des actions de nettoyage.

Pr. MERZOUK Soukaina 454

454
02/03/2025

Le bloc finally : Exécuter du code quoi


qu’il arrive
Résumé
Les erreurs font partie du quotidien du développeur.
Les exceptions permettent d'éviter les arrêts brutaux du
programme.
Le bloc try contient du code risqué.
Les blocs except gèrent les erreurs spécifiques.
Le bloc finally exécute du code dans tous les cas.
Grâce aux exceptions, un programme peut être plus robuste,
fiable et compréhensible pour l'utilisateur final.
Pr. MERZOUK Soukaina 455

455

Gérer plusieurs exceptions


Complète le code suivant pour gérer les erreurs si l'utilisateur entre une
mauvaise valeur ou tente une division par zéro.
def diviser():
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
try:
# Convertir les entrées en nombres et faire la division
a = int(a)
b = int(b)
print(f"Résultat : {a / b}")

Pr. MERZOUK Soukaina 456

456
02/03/2025

Gérer plusieurs exceptions


Complète le code suivant pour gérer les erreurs si l'utilisateur entre une
mauvaise valeur ou tente une division par zéro.
def diviser():

except ____________: #pour capturer une erreur de
conversion
print("Erreur : Veuillez entrer des nombres valides.")

except ____________: # À compléter pour capturer la


division par zéro
print("Erreur : Impossible de diviser par zéro.")
diviser()
Pr. MERZOUK Soukaina 457

457

Gérer plusieurs exceptions


Solution
def diviser():

try:
a = int(a)
b = int(b)
print(f"Résultat : {a / b}")
except ValueError:
print("Erreur : Veuillez entrer des nombres valides.")
except ZeroDivisionError:
print("Erreur : Impossible de diviser par zéro.")
diviser()
Pr. MERZOUK Soukaina 458

458
02/03/2025

Modules

Pr. MERZOUK Soukaina 459

459

Travailler avec les Modules en Python


Les modules permettent de diviser un programme en plusieurs fichiers
pour en faciliter la maintenance et améliorer ses performances.
Un module est un fichier contenant du code Python, incluant des
fonctions, des classes et des variables.
Un fichier Python, par exemple [Link], est un module dont le nom est
test.

Pr. MERZOUK Soukaina 460

460
02/03/2025

Importer un Module en Python


L'importation d'un module dans un programme s'effectue à l'aide du
mot-clé import, suivi du nom du module.
Exemple d'importation du module standard math et utilisation de la
fonction sqrt() :
import math
num = 4
print([Link](num))
Un module n'est importé qu'une seule fois par session d'interpréteur.
En cas de modification, il est nécessaire de redémarrer l'interpréteur ou
d'utiliser la fonction reload().
Pr. MERZOUK Soukaina 461

461

Créer un Module en Python


Un module est créé en enregistrant un fichier Python contenant des
fonctions. Exemple d'un fichier [Link] :
def addition(x, y):
return x + y
def soustraction(x, y):
return x - y
Ce module peut ensuite être utilisé dans un autre fichier test_module.py:
import calcul
print([Link](1, 2))
La sortie affichera 3.
Pr. MERZOUK Soukaina 462

462
02/03/2025

Méthodes d’Importation des Modules


Importation d’une fonction spécifique
from calcul import addition
print(addition(1, 2))
Importation de plusieurs fonctions
from calcul import addition, soustraction
Importation de toutes les fonctions d’un module (déconseillée pour la lisibilité)
from calcul import *
print(addition(1, 2))
print(soustraction(3, 2))
Renommage d’un module lors de l’importation
import calcul as cal
Pr. MERZOUK Soukaina print([Link](1, 2)) 463

463

Chemin de Recherche des Modules


Lorsqu'un module est importé, l'interpréteur effectue la recherche
dans les modules intégrés puis dans la liste des chemins définis dans
[Link].
Pour ajouter un répertoire spécifique à cette liste :
import sys
[Link]('/home/test/’)
import calcul
print([Link](1, 2))

Pr. MERZOUK Soukaina 464

464
02/03/2025

Fichiers Byte-Compilés en Python


Lorsqu'un module est importé pour la première fois, Python le compile
en bytecode et génère un fichier avec l'extension .pyc (Python
Compiled).

Ces fichiers sont stockés dans un répertoire __pycache__ et permettent


d’accélérer l’exécution des programmes en évitant la recompilation à
chaque importation.

Pr. MERZOUK Soukaina 465

465

Fichiers Byte-Compilés en Python


Exemple :
Si un module [Link] est importé, Python crée automatiquement un
fichier compilé sous le nom __pycache__/[Link], où
XX représente la version de l'interpréteur Python utilisé.
L'utilisation des fichiers .pyc est transparente pour l'utilisateur et
optimise les performances, notamment pour les modules
fréquemment utilisés.

Pr. MERZOUK Soukaina 466

466
02/03/2025

Modules Intégrés en Python


Python propose plusieurs modules intégrés facilitant le développement.
Voici quelques-uns des plus utilisés :
math : opérations mathématiques avancées
import math
print([Link](25)) # 5.0
random : génération de nombres aléatoires
import random
print([Link](1, 10)) # Nombre aléatoire entre 1 et 10
os : interaction avec le système d’exploitation
import os
print([Link]()) # Affiche le répertoire de travail actuel
Pr. MERZOUK Soukaina 467

467

Modules Intégrés en Python


sys : manipulation des arguments et du chemin d’exécution
import os
print([Link]()) # Affiche le répertoire de travail actuel
sys : manipulation des arguments et du chemin d’exécution
import sysprint([Link]) # Affiche la version de Python
datetime : gestion des dates et heures
import datetime
print([Link]()) # Affiche la date et l’heure
actuelles

Pr. MERZOUK Soukaina 468

468
02/03/2025

Packages en Python
Un package est un répertoire contenant plusieurs modules Python et un
fichier spécial __init__.py.

Ce fichier permet à Python de reconnaître le répertoire comme un


package et peut contenir du code d'initialisation.

Pr. MERZOUK Soukaina 469

469

Packages en Python: Création d'un Package


Supposons la création d'un package mathematiques avec deux modules:
[Link] et [Link].
Créez la structure suivante :
mathematiques/
│── __init__.py
│── [Link]
│── [Link]
Ajoutez du code dans [Link] :
def addition(a, b):
return a + b
def soustraction(a, b):
Pr. MERZOUK Soukaina return a - b 470

470
02/03/2025

Packages en Python: Création d'un Package

Ajoutez du code dans [Link] :


import math
def cosinus(x):
return [Link](x)
def sinus(x):
return [Link](x)

Pr. MERZOUK Soukaina 471

471

Importer un Module d'un Package

Pour utiliser un module depuis le package mathematiques :

from mathematiques import operations


print([Link](3, 2)) # Affiche 5

On peut aussi importer une fonction spécifique :

from [Link] import sinus


print(sinus(3.14)) # Affiche un résultat proche de 0

Pr. MERZOUK Soukaina 472

472
02/03/2025

Utilisation de __init__.py

Le fichier __init__.py peut contenir du code d'initialisation pour le


package. Par exemple, pour rendre l’importation plus simple :
Dans __init__.py :
from .operations import addition, soustraction
from .trigonometre import sinus, cosinus
Ainsi, on peut directement importer le package :
import mathématiques
print([Link](5, 3)) # Affiche 8
Cette organisation en packages permet de structurer un projet en
plusieurs modules facilement réutilisables.
Pr. MERZOUK Soukaina 473

473

Exploration du Contenu d’un Module avec dir()

La fonction dir() permet d’afficher les variables et fonctions définies


dans un module.
import calcul
print(dir(calcul))
Sortie possible :
['__builtins__', '__cached__', '__doc__', '__file__',
'__loader__', '__name__', '__package__', '__spec__',
'addition', 'soustraction']
Cette fonction facilite l’exploration du contenu des modules.
Pr. MERZOUK Soukaina 474

474

Vous aimerez peut-être aussi