Перейти к содержимому
На этой странице

Контекстные менеджеры

Все темы Python Developer

Что такое менеджеры контекста, для чего используются?

Менеджеры контекста в Python - это объекты, которые обеспечивают управление контекстом выполнения вокруг блока кода с использованием ключевого слова with. Они используются для выполнения действий до и после выполнения блока кода, например, для открытия и закрытия файлов, управления ресурсами или установки и удаления блокировок. Менеджеры контекста позволяют гарантировать правильное завершение действий, даже в случае возникновения исключения.


Что такое методы enter, exit?

Методы __enter__() и __exit__() являются частью протокола менеджера контекста в Python.

Метод __enter__():

  • Этот метод вызывается при входе в блок кода, определенный с использованием ключевого слова with.

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

Метод __exit__():

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

  • Он используется для завершения работы с ресурсами или выполнения каких-либо завершающих действий после выхода из контекста.

  • Метод __exit__() также обрабатывает исключения, возникающие в блоке кода, и позволяет корректно управлять ресурсами даже при возникновении ошибок.


Как создать контекстный менеджер через contextlib.contextmanager?

Функцию-генератор с одним yield декорируют contextlib.contextmanager. Код до yield получает ресурс, значение yield попадает в as, а код после него освобождает ресурс. Очистку помещают в finally, потому что исключение из тела with вбрасывается в генератор на месте yield. Если менеджер не должен подавлять ошибку, ее не поглощают либо поднимают снова. Корректность особенно проверяют на исключении внутри блока, потому что успешный путь не показывает ошибки очистки.

Собеседования: Python

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Python-разработчик, Backend-разработчик на Python. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.