What are context managers in Python?
Context managers set up and clean up resources automatically, usually through the `with` statement.
- Uses with statement
- Handles cleanup even on errors
- Common for files and locks
What are context managers in Python?