context manager

In Python, a context manager is an object that allows you to handle a context where you allocate and release resources when needed. This type of object implements the .__enter__() and .__exit__() methods, which defines the context manager protocol.

The most common use of context managers is to manage the resources like file streams, network connections, and locks. You can use context managers through the with the statement, which ensures that resources are properly cleaned up after their usage, even if an error occurs during the process.

When you enter a given context, the context manager’s .__enter__() method allocates the managed resources. When you exit the context, the .__exit__() method releases the resources and cleans up. So, context managers are great for handling setup and teardown logic.

For example, when working with files, a context manager automatically closes the file for you, which is crucial in preventing file corruption or data loss.

Python Context Manager Example

Here’s an example of a demo context manager:

Python
>>> class HelloContextManager:
...     def __enter__(self):
...         print("Entering the context...")
...         return "Hello, World!"
...     def __exit__(self, exc_type, exc_value, exc_tb):
...         print("Leaving the context...")
...

>>> with HelloContextManager() as hello:
...     print(hello)
...
Entering the context...
Hello, World!
Leaving the context...

In this example, the HelloContextManager class is a context manager that you can use in a with statement.

When the statement runs, the .__enter__() method is called, entering the context and handling the setup logic. Note that this method’s return value is assigned to the hello variable provided after the as specifier. When the statement finishes, the .__exit__() method is called to handle the teardown logic.

Tutorial

Context Managers and Python's with Statement

In this step-by-step tutorial, you'll learn what the Python with statement is and how to use it with existing context managers. You'll also learn how to create your own context managers.

intermediate python

For additional information on related topics, take a look at the following resources:


By Leodanis Pozo Ramos • Updated Jan. 17, 2025 • Reviewed by Dan Bader