Python – язык программирования, наделенный достаточно большим количеством инструментов, функций и встроенных стандартных команд. С их помощью удается создавать совершенно разное программное обеспечение. Огромную роль в таких приложениях может сыграть менеджер контекста.
Базовые определения
Перед тем как начинать изучение любого инструмента языка программирования, нужно запомнить несколько базовых определений:
- Переменная – единица хранения информации. Является именованной областью памяти.
- Функция – блок кода, который выполняет определенные операции для получения задуманного результата.
- Оператор – объект, который умеет при помощи специальных команд манипулировать операндами.
- Операнд – объекты кода, которыми умеет управлять оператор.
- Алгоритм – набор инструкций и указаний, необходимых для решения поставленной изначально задачи.
В Питоне присутствует множество операторов. Один из них используется для формирования менеджера контекста. Далее речь зайдет о With в Python.
Предназначение With и менеджера
With появился в Питоне с версии 2.5. Данный оператор является достаточно полезным. Данная функция используется почти каждым написанным на языке приложением.
With выполняет различные действия при активации:
- обрабатывает открытие/закрытие ресурсов;
- закрывает автоматически часть приложения, с которой больше не нужно работать.
Все это необходимо для того, чтобы грамотно распределять ресурсы устройства, а также оптимизировать функционирование имеющейся памяти.
Менеджер в Питоне
The Python – простой и функциональный язык разработки приложений. В нем можно обрабатывать файлы. В C и некоторых других ЯП для этого требуется вручную открывать и закрывать документ. Ниже – фрагмент кода, который помогает это сделать:
With делает это автоматически. Каждый раз открывать и закрывать файлы самостоятельно при формировании приложения на The Python не придется. У оператора with имеется контекст (блок), в котором он будет действовать.
Когда приложение выходит из соответствующего контекста, with будет автоматически закрывать ранее используемый файл. Все это приводит к тому, что рассматриваемый элемент в the Python носит название «диспетчер контекста».
with open(‘input.txt’, ‘r’) as file_obj:
Выше – пример того, как данная «опция» используется при обработке файлов. The operator будет всегда в конце закрывать документ. Это относится даже к ситуациям, когда само приложение работает/завершается некорректно.
Применение
Возможность использования with in the statement реализована в большом количестве классов Питона. Данный элемент the code:
- Сохраняет ссылку на объект в объекте контекста. Так называют объект, содержащий дополнительную информацию о своем состоянии (область видимости, модуль и так далее).
- После создания объекта 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 для заданного класса.
Выше – пример того, как происходит формирование упомянутого элемента в The Python. Здесь есть метод __init__. Он написан для обработчика, устанавливает начальное состояние объектов и соответствующих переменных.
Также есть метод __enter__, сохраняющий состояние объекта и открывающий его. Это позволяет попасть внутрь заданного блока. После выполнения соответствующего фрагмента кода диспетчер выполнит __exit__, чтобы восстановить прежнее состояние the object. Файл будет закрыт.
На экране появится такая надпись вследствие выполнения приложения.
Методы
При работе с Python with a statement, необходимо помнить о методах для менеджеров контекста. Их всего два:
- __enter__. Используется для того, чтобы войти в context времени выполнения. Либо возвращает текущий объект, либо другой связанный элемент. Возвращаемое значение будет привязано к идентификатору в виде предположения with.
- Метод __exit__. Применяется для возврата результата логического характера. Указывает на любое произошедшее исключение. Если есть одно исключение для with, оно будет переведено в конец блока.
Выше – наглядный пример того, как реализованы эти методы in The Python with statement. А вот результат, который будет выведен на экран.
Здесь можно увидеть наглядный пример использования with…as, but лучше всего закончить дистанционные компьютерные курсы по The Python, чтобы быстро освоить язык и всего его возможности.
Интересует Python? Добро пожаловать на курс в Otus!