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 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.