Встречается на собеседованиях • сегодня
В чем разница между контекстным менеджером и 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
интервью вопросы и ответы