Встречается на 2% собеседований по Python
В чем разница между контекстным менеджером и try/finally в Python
Контекстный менеджер (используется с with) и try/finally оба обеспечивают выполнение завершающего кода, но контекстный менеджер делает это более элегантно и читаемо.
Ключевые отличия:
- Читаемость:
withявно показывает границы работы с ресурсом. - Инкапсуляция: Контекстный менеджер скрывает логику инициализации/очистки внутри класса (
__enter__,__exit__). - Обработка исключений:
__exit__получает информацию об исключении, позволяя его обработать или подавить.
Пример:
python
# try/finally
file = open('file.txt', 'r')
try:
data = file.read()
finally:
file.close()
# with (контекстный менеджер)
with open('file.txt', 'r') as file:
data = file.read() # файл закроется автоматическиКонтекстные менеджеры предпочтительнее для работы с ресурсами, требующими освобождения (файлы, соединения и т.д.). try/finally более универсален, но менее удобен для типовых сценариев.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы