Middle
52
Was ist ein Kontextmanager, welche Aufgaben löst er und wie schreibt man einen eigenen mit einer Klasse und einem Dekorator?
Unternehmen wurden gefragt
fabriqeue
Antwort von AI
sobes.tech KI
Контекстный менеджер в Python — это объект, который управляет ресурсами, обеспечивая их корректное открытие и закрытие. Он используется с конструкцией with, что гарантирует выполнение кода очистки даже при возникновении исключений.
Задачи контекстного менеджера:
- Автоматическое освобождение ресурсов (файлы, соединения, блокировки)
- Обеспечение чистоты кода и предотвращение утечек ресурсов
Пример реализации через класс:
class MyContextManager:
def __enter__(self):
print("Ресурс открыт")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Ресурс закрыт")
# Можно обработать исключения, если нужно
with MyContextManager() as cm:
print("Работа с ресурсом")
Пример реализации через декоратор contextlib.contextmanager:
from contextlib import contextmanager
@contextmanager
def my_context():
print("Ресурс открыт")
try:
yield
finally:
print("Ресурс закрыт")
with my_context():
print("Работа с ресурсом")
Оба варианта позволяют удобно управлять ресурсами и обеспечивают выполнение кода очистки.