Найти тему
Властелин машин

Как автоматизировать операции с контекстом Python

Часто участки кода требуется дополнять одними и теми же инструкциями. Например, для добавления времени исполнения строк или автоматического открытия и закрытия файла. Эти действия можно автоматизировать при помощи декоратора contextmanager из модуля contextlib.
Техника его применения заключается в декорировании некоторой функции, в которой выполняются необходимые вам повторяющиеся действия, а точкой входа для изменяемого кода является строка с инструкцией
yield. Например, так можно создать контекст измерения времени:

Для задания контекста достаточно вызвать функцию в блоке инструкции with, куда и поместить новый код:

-2

Бывает, что некоторые объекты из контекста требуется использовать в блоке с изменяемым кодом. Для этого укажите их после инструкции yield. Например, так создается контекст файла с инструкцией with (подобно известному способу):

-3

А теперь запишем строку в файл новым способом:

-4

-5