Sobes.tech
Junior

Donnez un exemple d'utilisation du gestionnaire de contexte en Python.

sobes.tech IA

Réponse de l'IA

# Ouverture du fichier :
# L'utilisation du gestionnaire de contexte garantit la fermeture automatique du fichier,
# même si une exception se produit.
with open('my_file.txt', 'w') as f:
    # Écrire des données dans le fichier
    f.write('Hello, world!\n')
    f.write('Ceci est un test.')

# Exemple de création d'un gestionnaire de contexte personnalisé avec une classe :
class ManagedResource:
    def __enter__(self):
        print('Ressource allouée')
        # Peut retourner un objet qui sera assigné à la variable après 'as'
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('Ressource libérée')
        # Peut gérer les exceptions. Retourner True supprime l'exception.
        return False

# Utilisation du gestionnaire de contexte créé :
with ManagedResource() as res:
    print('Travail avec la ressource')
    # res - c'est l'objet retourné par __enter__

# Exemple de création d'un gestionnaire de contexte personnalisé avec le décorateur contextmanager :
from contextlib import contextmanager

@contextmanager
def efficient_resource():
    print('Ressource efficace allouée')
    try:
        yield 'Ressource efficace' # Objet qui sera retourné
    finally:
        print('Ressource efficace libérée')

# Utilisation du gestionnaire de contexte avec décorateur :
with efficient_resource() as eff_res:
    print(f'Utilisation : {eff_res}')