With … as — менеджеры контекста.

Конструкция with … as в Python используется для оборачивания выполнения блока инструкций менеджером контекста. Менеджеры контекста позволяют выделять и освобождать ресурсы строго по необходимости. Синтаксис конструкции with … as:

"with" expression ["as" target] ("," expression ["as" target])* ":"
    suite

В коде выше происходит выполнение:

  1. Выполняется выражение в конструкции with … as.
  2. Загружается специальный метод __exit__ для дальнейшего использования.
  3. Выполняется метод __enter__. Если конструкция with включает в себя слово as, то возвращаемое методом __enter__ значение записывается в переменную.
  4. Выполняется suite.
  5. Вызывается метод __exit__, причём неважно, выполнилось ли suite или произошло исключение. В этот метод передаются параметры исключения, если оно произошло, или во всех аргументах значение None, если исключения не было.

Для чего нужна конструкция with … as?

Самый распространённый пример использования этой конструкции — открытие файлов. Предположим, у вас есть две связанные операции, которые вы хотите исполнить в паре, поместив между ними блок кода. Менеджеры контекста позволяют сделать именно это. Например:

with open('some_file', 'w') as opened_file:
    opened_file.write('Hola!')

Код выше открывает файл, записывает в него данные и закрывает файл после этого. При возникновении ошибки при записи данных в файл менеджер контекста попробует его закрыть.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Chinese (Traditional)EnglishJapaneseRussianUkrainian

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: