Leçon 8 / 10 — Chapitre 5: Itérateurs, générateurs et context managers
Créer un context manager avec une classe
Un context manager personnalisé est utile pour garantir qu'une action de nettoyage a toujours lieu à la sortie d'un bloc — pas seulement pour des fichiers, mais pour n'importe quelle ressource ou état temporaire.
class Chronometre:
def __enter__(self):
import time
self.debut = time.time()
return self
def __exit__(self, type_erreur, valeur_erreur, traceback):
import time
duree = time.time() - self.debut
print(f"Duree : {duree:.4f} secondes")
with Chronometre():
total = 0
for i in range(1000000):
total = total + i
Ce code affiche Duree : 0.0XXX secondes à la sortie du bloc with : __enter__ enregistre l'heure de départ, __exit__ calcule et affiche la durée écoulée — un chronométrage automatique, sans avoir à appeler time.time() manuellement avant et après, comme dans le décorateur chronometrer vu au chapitre précédent.
Cette classe fait un travail très proche du décorateur chronometrer (vu au chapitre précédent), mais s'applique à un bloc de code plutôt qu'à une fonction entière — les deux techniques répondent à des besoins légèrement différents.
À vous de jouer : créez une classe Chronometre avec __enter__ et __exit__, et utilisez-la avec with autour d'une boucle de calcul.
Continuez ce module
Débloquez les leçons restantes ainsi que l'attestation finale.
9 000 XOF / 13,72 € / 14,95 $
Débloquez les 94 leçons restantes de ce module
Pour vous communiquer où envoyer le paiement.
Moyen de paiement souhaité
Nous vous contactons pour le paiement — activé dès réception.