When writing PyQGIS scripts, especially processing script and expression function, I come across the term **context**. I use it, but I don't know what all contexts mean actually.

There are also `Qgs***Context` classes. For example, 
[QgsExpressionContext][1], [QgsSymbolWidgetContext][2], [QgsGeometryCheckContext][3], 
[QgsAttributeEditorContext][4], ... .

What does `context` refer in all those class names and in some methods in PyQGIS?


  [1]: https://qgis.org/api/classQgsExpressionContext.html
  [2]: https://qgis.org/api/classQgsSymbolWidgetContext.html
  [3]: https://qgis.org/api/classQgsGeometryCheckContext.html
  [4]: https://qgis.org/api/classQgsAttributeEditorContext.html