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

В чем разница между контекстным менеджером и try/finally в Python

Контекстный менеджер (используется с with) и try/finally оба обеспечивают выполнение завершающего кода, но контекстный менеджер делает это более элегантно и читаемо.

Ключевые отличия:

  1. Читаемость: with явно показывает границы работы с ресурсом.
  2. Инкапсуляция: Контекстный менеджер скрывает логику инициализации/очистки внутри класса (__enter__, __exit__).
  3. Обработка исключений: __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 более универсален, но менее удобен для типовых сценариев.

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

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

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

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