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

Приходилось ли писать собственные контекстные менеджеры

Да, приходилось. В Python контекстные менеджеры реализуются через протокол __enter__ и __exit__ или с помощью декоратора @contextmanager из модуля contextlib. Они полезны для управления ресурсами (файлы, соединения) и выполнения setup/teardown операций.

Пример с классом:

python
class DatabaseConnection:
    def __enter__(self):
        self.conn = connect_to_db()
        return self.conn
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.conn.close()
        if exc_type is not None:
            print(f"Error occurred: {exc_val}")

Пример с @contextmanager:

python
from contextlib import contextmanager

@contextmanager
def temp_file(path):
    try:
        f = open(path, 'w')
        yield f
    finally:
        f.close()

Контекстные менеджеры гарантируют освобождение ресурсов даже при возникновении исключений.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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