Sobes.tech
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("Работа с ресурсом")

Оба варианта позволяют удобно управлять ресурсами и обеспечивают выполнение кода очистки.