Простыми словами, не обязательно про программирование, контекст - это то, с чем мы в данный момент работаем, текущая ситуация. В программировании этот термин может использоваться как абстрактное понятие, а не именно какие-то объекты или классы.
Для примера, при работе с файлами вы открываете файл через open
в блоке with
:
with open("file.txt") as file:
print(file.read())
Вы получаете объект файла, и при выходе из блока with
файл автоматически закрывается (в том числе, если выход из блока произошел из-за какой-то ошибки). При этом сам объект файла (без блока with
) не является контекстом, т.к. при простом открытии файла без блока with
вы получите точно такой же объект файла, но файл закроется автоматически только при завершении программы, вам нужно вручную закрыть его (как бы "выйти из контекста", вручную управлять контекстом).
При использовании конструкции with
вы не вручную управляете контекстом (например, не закрываете файл явно), а за вас это делает менеджер контекста.
Контекст в данном случае - это именно абстрактное понятие. Менеджер контекста - это не контекст, это объект который буквально управляет ("manage") контекстом, для Python - выполняет предварительные и завершающие действия, чтобы войти и выйти из контекста (например, открывает файл при входе в блок with
и закрывает файл при выходе из блока).
Также в программировании контекстом может называться некий объект, который хранит текущее состояние программы (или части программы, например, функции или объекта). Для методов классов контекстом можно считать сам объект класса, от которого они вызываются, либо какое-то поле, которое описывает текущую ситуацию, с которой мы работаем, например модель для контроллера.