Middle
97
questionbank
Что такое контекстный менеджер?
Ответ от нейросети
sobes.tech AI
Контекстный менеджер в Python — это объект, который определяет контекст выполнения, управляя выделением и освобождением ресурсов. Он реализует протокол контекстного менеджера, содержащий магические методы __enter__ и __exit__.
__enter__: Вызывается при входе в контекст, обычно возвращает ресурс, которым нужно управлять.__exit__: Вызывается при выходе из контекста, даже если произошло исключение. Отвечает за освобождение ресурса. Получает три аргумента: тип исключения, объект исключения и трассировка стека (илиNone, если исключения не было).
Часто используется с оператором with для автоматического управления ресурсами, такими как файлы, сетевые соединения или блокировки.
// Пример использования контекстного менеджера для работы с файлом
with open('myfile.txt', 'r') as f:
content = f.read()
// Файл автоматически закрывается после выхода из блока with
Контекстные менеджеры можно создавать, реализуя протокол или используя декоратор @contextmanager из модуля contextlib.
// Пример создания контекстного менеджера с использованием декоратора
from contextlib import contextmanager
@contextmanager
def timer():
import time
start_time = time.time()
yield // Точка входа в контекст
end_time = time.time()
print(f"Время выполнения: {end_time - start_time:.2f} сек.")
// Использование созданного контекстного менеджера
with timer():
# Код, который нужно измерить
import time
time.sleep(1)