PaliSkill
Python avancé

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 la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 87 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès