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

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