Python – язык программирования, наделенный достаточно большим количеством инструментов, функций и встроенных стандартных команд. С их помощью удается создавать совершенно разное программное обеспечение. Огромную роль в таких приложениях может сыграть менеджер контекста.

Базовые определения

Перед тем как начинать изучение любого инструмента языка программирования, нужно запомнить несколько базовых определений:

  1. Переменная – единица хранения информации. Является именованной областью памяти.
  2. Функция – блок кода, который выполняет определенные операции для получения задуманного результата.
  3. Оператор – объект, который умеет при помощи специальных команд манипулировать операндами.
  4. Операнд – объекты кода, которыми умеет управлять оператор.
  5. Алгоритм – набор инструкций и указаний, необходимых для решения поставленной изначально задачи.

В Питоне присутствует множество операторов. Один из них используется для формирования менеджера контекста. Далее речь зайдет о With в Python.

Предназначение With и менеджера

With появился в Питоне с версии 2.5. Данный оператор является достаточно полезным. Данная функция используется почти каждым написанным на языке приложением.

With выполняет различные действия при активации:

  • обрабатывает открытие/закрытие ресурсов;
  • закрывает автоматически часть приложения, с которой больше не нужно работать.

Все это необходимо для того, чтобы грамотно распределять ресурсы устройства, а также оптимизировать функционирование имеющейся памяти.

Менеджер в Питоне

The Python – простой и функциональный язык разработки приложений. В нем можно обрабатывать файлы. В C и некоторых других ЯП для этого требуется вручную открывать и закрывать документ. Ниже – фрагмент кода, который помогает это сделать:

Оператор With в Python

With делает это автоматически. Каждый раз открывать и закрывать файлы самостоятельно при формировании приложения на The Python не придется. У оператора with имеется контекст (блок), в котором он будет действовать.

Когда приложение выходит из соответствующего контекста, with будет автоматически закрывать ранее используемый файл. Все это приводит к тому, что рассматриваемый элемент в the Python носит название «диспетчер контекста».

with open(‘input.txt’, ‘r’) as file_obj:
Выше – пример того, как данная «опция» используется при обработке файлов. The operator будет всегда в конце закрывать документ. Это относится даже к ситуациям, когда само приложение работает/завершается некорректно.

Применение

Возможность использования with in the statement реализована в большом количестве классов Питона. Данный элемент the code:

  1. Сохраняет ссылку на объект в объекте контекста. Так называют объект, содержащий дополнительную информацию о своем состоянии (область видимости, модуль и так далее).
  2. После создания объекта the operator вызывает метод под названием __enter__ dunder для соответствующего компонента. С его помощью происходит открытие ресурсов для объекта. Может использоваться при реализации сохранения состояния элемента.

При работе с with необходимо обратить внимание на ключевое слово as in the statement. Оно фактически возвращает объект контекста. As a используется для того, чтобы получить элемент, возвращаемый при помощи функции open().

As in statements можно не использовать, если у разработчика имеется ссылка на исходный объект контекста в другом месте.

Далее предстоит перейти во вложенный блок операторов. Когда он закончится или встретится исключение, приложение выполнит для объекта the context __exit__. Она выступает в качестве первой функции безопасности. Используется всегда для того, чтобы высвободить ресурсы устройства и выйти из заданного контекста.

Собственные менеджеры – как создать

Для более удобного и быстрого изучения in The Python оператора with as необходимо научиться создавать собственные context managers для заданного класса.

Оператор With в Python

Выше – пример того, как происходит формирование упомянутого элемента в The Python. Здесь есть метод __init__. Он написан для обработчика, устанавливает начальное состояние объектов и соответствующих переменных.

Также есть метод __enter__, сохраняющий состояние объекта и открывающий его. Это позволяет попасть внутрь заданного блока. После выполнения соответствующего фрагмента кода диспетчер выполнит __exit__, чтобы восстановить прежнее состояние the object. Файл будет закрыт.

Оператор With в Python

На экране появится такая надпись вследствие выполнения приложения.

Методы

При работе с Python with a statement, необходимо помнить о методах для менеджеров контекста. Их всего два:

  1. __enter__. Используется для того, чтобы войти в context времени выполнения. Либо возвращает текущий объект, либо другой связанный элемент. Возвращаемое значение будет привязано к идентификатору в виде предположения with.
  2. Метод __exit__. Применяется для возврата результата логического характера. Указывает на любое произошедшее исключение. Если есть одно исключение для with, оно будет переведено в конец блока.
Оператор With в Python

Выше – наглядный пример того, как реализованы эти методы in The Python with statement. А вот результат, который будет выведен на экран.

Оператор With в Python

Здесь можно увидеть наглядный пример использования with…as, but лучше всего закончить дистанционные компьютерные курсы по The Python, чтобы быстро освоить язык и всего его возможности.

Интересует Python? Добро пожаловать на курс в Otus!