Sobes.tech
Middle
44

Wat is een contextmanager in Python? Waarvoor is het nodig? Hoe schrijf je er een eigen?

Bedrijven waar gevraagd werd
СБЕРСБЕР

Antwoord van AI

sobes.tech AI

Контекстный менеджер в Python — это объект, который определяет методы __enter__ и __exit__, позволяющие управлять ресурсами (например, файлами, соединениями) с помощью конструкции with. Это удобно для автоматического открытия и закрытия ресурсов, даже если внутри блока возникнут исключения.

Зачем нужен:

  • Гарантирует корректное освобождение ресурсов.
  • Упрощает код, делая его более читаемым и безопасным.

Как написать свой контекстный менеджер:

  1. Через класс с методами __enter__ и __exit__:
class MyContextManager:
    def __enter__(self):
        print("Вход в контекст")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Выход из контекста")
        # Можно обработать исключения, если нужно

with MyContextManager() as cm:
    print("Внутри блока with")
  1. Через декоратор contextlib.contextmanager с генератором:
from contextlib import contextmanager

@contextmanager
def my_context():
    print("Вход в контекст")
    yield
    print("Выход из контекста")

with my_context():
    print("Внутри блока with")

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