Python Russian

Python Russian 

простым языком о прекрасном языке программирования

50subscribers

76posts

Контекстный менеджер и 2 способа его написания. Конструкция WITH

Рассмотрим что такое контекстный менеджер в Python, для чего он нужен и как можно его написать самому. Этот вопрос не редко задают на собеседованиях.
Контекстный менеджер это удобный способ инкапсулировать логику работы с каким то ресурсом try-except-finally, в том числе гарантировать освобождение ресурса, его закрытие. Например закрывать файл, бд, соединение с сетью при выходе из контекста.
Многие ресурсы в python уже имеют менеджеры контекста, например для работы с файлами.
Особенности:
1) если пишем менеджер через contextlib то используем yield возвращающий ровно 1 значение (наш ресурс)
2) если пишем менеджер через класс, то используем return в методе __enter__
3) если у какого-либо ресурса уже есть контекстный менеджер, то лучше работать через него
4) используем контекстный менеджер с помощью конструкции WITH
Почитать подробно:
https://docs.python.org/3/library/contextlib.html?#contextlib.contextmanager
https://docs.python.org/3/reference/datamodel.html#with-statement-context-managers
https://docs.python.org/3/reference/compound_stmts.html#the-with-statement
https://docs.python.org/3/library/stdtypes.html#context-manager-types
Присоединяйтесь к помощи каналу, будет интересно)
Subscription levels3

Большое спасибо

$2.84 per month
На поддержку канала и просто в знак благодарности

На новые идеи

$7.1 per month
Чтобы новые видео появлялись и для поддержки вдохновения

Show must go on...

$14.2 per month
На хорошее кофе и для металлу в голосе
Go up