Привет! Сегодня мы разберем одну из тех тем, которая моментально отделяет новичка от профи. Речь пойдет об операторе with — конструкции, которую многие используют, но далеко не все понимают по-настоящему. Чтобы материал был максимально наглядным, я запаковал всю полезную инфу в серию карточек 👇🏻 Как видите, проблема стара как мир. Каждый раз, когда ваш код работает с внешним ресурсом — файлом, соединением с базой, блокировкой — вы рискуете. Вылетит исключение — и всё, ресурс останется "висеть". Раньше для этого использовали громоздкую конструкцию try...finally. Но это некрасиво и легко забыть. К счастью, в Python есть инструкция with. Она делает тот же самый код чище, безопаснее и понятнее. Эта магия работает благодаря протоколу менеджера контекста. Это не волшебство, а простой контракт: чтобы объект работал с with, у него должны быть два метода: enter (что делать на входе) и exit (что делать на выходе, даже если всё сломалось). Пользоваться чужим хорошо, но понимать, как сделать сво