Контекстные менеджеры — это специальные конструкции, которые представляют из себя блоки кода, заключенные в инструкцию
with. Инструкция with создает блок, используя протокол, контекстного менеджера. Простейшей функцией, использующей данный протокол является функция
open(). Каждый раз, когда мы открываем файл, нам необходимо его закрыть, чтобы вытолкнуть выходные данные на диск (на самом деле Python вызывает метод close() автоматически, но явное его использование является хорошим тоном). Например:file = open("file.txt", "w")
file.write("Hello, World")
file.close()Чтобы каждый раз не вызывать метод
close() мы можем воспользоваться контекстным менеджером функции open(), который автоматически закроет файл после выхода из блока:with open("file.txt", "w") as file:
file.write("Hello, World")Здесь нам не нужно каждый раз вызывать метод
close, чтобы вытолкнуть данные в файл. Из этого следует, что контекстный менеджер используется для выполнения каких-либо действий до входа в блок и после выхода из него. Но функциональность контекстных менеджеров на этом не заканчивается.