Обложка канала

Python - Советы, библиотеки, гайды

10180 @xo_py

Всё для Python программиста :3 Готовый код, советы, лайфхаки, годные библиотеки, уроки и многое другое!

Python - Советы, библиотеки, гайды

4 года назад
Открыть в
🐍 Совет по Python №8. Создавайте более простые объекты, поддерживающих выражение with! Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками? Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов enter и exit как показано на первом примере. На первом примере вы видите более распространённый способ реализации возможностей менеджера контекста в Python, но то же самое можно сделать и проще, что и показано на втором примере. На втором примере протокол управления контекстом реализован с использованием декоратора contextmanager. Первая часть функции tag (до yield) выполняется при входе в блок with. Затем выполняется сам этот блок, а после этого выполняется оставшаяся часть функции tag.