Встречается на собеседованиях • сегодня

Как сделать свой контекстный менеджер в рамках функции в Python

Для создания контекстного менеджера в Python можно использовать декоратор @contextmanager из модуля contextlib. Вот пример:

python
from contextlib import contextmanager

@contextmanager
def my_context_manager():
    print("Entering the context")  # код до yield - аналог __enter__
    resource = "some resource"
    try:
        yield resource  # значение передается в блок with
    finally:
        print("Exiting the context")  # код после yield - аналог __exit__

Использование

with my_context_manager() as res:
print(f"Working with {res}")

text

Ключевые моменты:
1. Функция должна быть генератором (содержать yield)
2. Код до yield выполняется при входе в контекст
3. Код после yield выполняется при выходе (даже если было исключение)
4. Значение после yield становится доступным в блоке with через as
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы