Context Manager
what is context
the state surrounding a section of code
why we need a context manager
- writing try/finally every time can get cumbersom
- easy to forget closing the file
use cases
Useful for program that needs Enter / Exit handeling
- create / releasing resources
- database transaction
- set and reset decimal context
Common patterns
- open / close
- lock / release
- change / reset
- start / stop
- enter / exit
protocal
implement these two dunder methods:
__enter__
perform the setup, optionally return an object
__exit__
receives error (silence or propagate)
- need arguments
exc_type
,exc_value
,exc_trace
to handle exception - return True to silence exception
perform clean up
- need arguments
examples
contextlib
nested contexts