Назад к вопросам
Junior
65
questionbank

Приведите пример использования контекстного менеджера в Python.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

# Открытие файла:
# Использование контекстного менеджера гарантирует автоматическое закрытие файла,
# даже если возникнет исключение.
with open('my_file.txt', 'w') as f:
    # Запись данных в файл
    f.write('Hello, world!\n')
    f.write('This is a test.')

# Пример создания собственного контекстного менеджера с помощью класса:
class ManagedResource:
    def __enter__(self):
        print('Ресурс выделен')
        # Может возвращать объект, который будет присвоен переменной после 'as'
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('Ресурс освобожден')
        # Может обрабатывать исключения. Возврат True suppresses the exception.
        return False

# Использование созданного контекстного менеджера:
with ManagedResource() as res:
    print('Работаем с ресурсом')
    # res - это объект, возвращенный методом __enter__

# Пример создания собственного контекстного менеджера с помощью декоратора contextmanager:
from contextlib import contextmanager

@contextmanager
def efficient_resource():
    print('Эффективный ресурс выделен')
    try:
        yield 'Эффективный ресурс' # Объект, который будет возвращен
    finally:
        print('Эффективный ресурс освобожден')

# Использование контекстного менеджера с декоратором:
with efficient_resource() as eff_res:
    print(f'Используем: {eff_res}')