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

Python Senior Без компании
В чем разница между контекстным менеджером и try/finally в Python
Ответы
Контекстный менеджер (используется с `with`) и `try/finally` оба обеспечивают выполнение завершающего кода, но контекстный менеджер делает это более элегантно и читаемо. **Ключевые отличия:** - **Читаемость**: `with` явно показывает границы работы с ресурсом. - **Инкапсуляция**: Контекстный менеджер скрывает логику инициализации/очистки внутри класса (`__enter__`, `__exit__`). - **Обработка исключений**: `__exit__` получает информацию об исключении, позволяя его обработать или подавить. **Пример:** ``` # 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` более универсален, но менее удобен для типовых сценариев.