The general syntax and possible implementations

The general syntax for the with statement in the simplest form is as follows:

with context_manager: 
    # block of code 
    ... 

Additionally, if the context manager provides a context variable, it can be stored locally using the as clause:

with context_manager as context: 
    # block of code 
    ...

Note that multiple context managers can be used at once, as follows:

with A() as a, B() as b: 
    ... 

This is equivalent to nesting them, as follows:

with A() as a: 
    with B() as b: 
        ...