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

Как создавал контекстный менеджер на проекте

В Python контекстные менеджеры обычно создаются с помощью класса, реализующего методы __enter__ и __exit__, или через contextlib.contextmanager.

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

python
class DatabaseConnection:
    def __enter__(self):
        self.conn = connect_to_db()  # Инициализация подключения
        return self.conn
text
def __exit__(self, exc_type, exc_val, exc_tb):
    self.conn.close()  # Автоматическое закрытие
    if exc_type:  # Обработка исключений
        print(f"Error: {exc_val}")
text

**Пример с `contextmanager`:**  
```python
from contextlib import contextmanager

@contextmanager
def temp_file(filepath):
    try:
        file = open(filepath, 'w')
        yield file  # Возвращаем ресурс
    finally:
        file.close()  # Гарантированное закрытие

Когда использовал:

  • Для управления подключениями к БД (автоматическое закрытие).
  • Временные файлы (удаление после использования).
  • Таймеры (замер времени выполнения блока кода).

Плюсы:

  • Упрощает управление ресурсами.
  • Уменьшает вероятность утечек.
  • Делает код чище (избегаем try-finally).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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