Middle
51
Wat is een contextmanager, welke taken lost hij op en hoe schrijf je er zelf een via een klasse en een decorateur?
Bedrijven waar gevraagd werd
fabriqeue
Antwoord van AI
sobes.tech AI
Контекстный менеджер в 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("Работа с ресурсом")
Оба варианта позволяют удобно управлять ресурсами и обеспечивают выполнение кода очистки.