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

🐍 Python Turbo 🐍

19061 @bestpython

Трюки и полезности Python. Все в одном месте. Никакой воды, только полезные материалы. Марафоны по кодингу, разбор вашего кода в чате.

🐍 Python Turbo 🐍

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