With ... as - менеджеры контекста в python
Теория
Конструкция with ... as используется для оборачивания выполнения блока инструкций менеджером контекста. Иногда это более удобная конструкция, чем try: except: finally.
Синтаксис оператора контекста with
"with" expression ["as" target] ("," expression ["as" target])* ":"suite
Что происходит при выполнении данного блока?
- Выполняется выражение в конструкции with ... as.
- Загружается специальный метод __exit__ для дальнейшего использования.
- Выполняется метод __enter__. Если конструкция with включает в себя слово as, то возвращаемое методом __enter__ значение записывается в переменную.
- Выполняется suite.
- Вызывается метод __exit__. В этот метод передаются параметры исключения, если оно произошло, если нет то во всех аргументах значение None, если исключения не было.
Если в конструкции with - as было несколько выражений, то это эквивалентно нескольким вложенным конструкциям.
Для чего применяется конструкция with ... as?
Для гарантии того, что критические функции выполнятся в любом случае. Самый распространённый пример использования этой конструкции - открытие файлов. Я уже рассказывал об открытии файлов с помощью функции open, однако конструкция with ... as, как правило, является более удобной и гарантирует закрытие файла в любом случае.
Пример:
Данный пример показывает, что файл будет закрыт вне зависимости от того, что введёт пользователь.
Подписывайтесь на канал, тут каждый день выходят новые уроки.
Все уроки, а также коды с уроков вы можете найти в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.