Думаю, любому python-девелоперу знакома конструкция:
with BLA-BLA-BLA as b:
b.do_something()
Сегодня в очередной раз столкнулся с этой конструкцией при чтении кода на одном из гитхаб-проектов.
Однако, я никогда эту конструкцию не применял. Даже и мысли не возникало. Всегда находился способ проще.
Но сегодня задумался: А может что-то упустил? Может есть какие-то выгоды?
Опишите свои причины использования механизма написания менеджера контекста. В каких ситуациях Вы их используете и почему?
UPD:
Из ответов складывается ощущение, что менеджер контекста нужен для ситуаций, когда нужно автоматизировать завершающие действия, к примеру закрытие файла. Другими словами это аналог умного указателя из мира C++.
Все так?
P.S.:
Вопрос не про то как написать. То есть НЕ про то, что надо написать в __enter__() , __exit__() методах. А про best practice