try:
    source_file = open(src, 'r')
    buffer = []
    try:
        buffer = source_file.readlines()
    finally:
        source_file.close()
    target_file = open(target, 'w')
    try:
        for line in reversed(buffer): 
            target_file.write(line)
    finally:
        target_file.close()
except IOError:
    print("Tough luck, junior")
buffer = []
try:
    with open(src) as source_file:
        buffer = source_file.readlines()
    with open(target) as target_file:
        for line in reversed(buffer):
            target_file.write(line)
except IOError:
    print("Much better, now, ain't it?")
  
with израз [as име]:
    блок
  __enter__() на CM и резултатът се записва в името след as__exit__(type, value, traceback) на CM__exit__(None, None, None) на CM
with open('/etc/passwd') as source_file:
    buffer = source_file.readlines()
print('Done!')
  е същото като
source_file = open('/etc/passwd').__enter__()
try:
  buffer = source_file.readlines()
  source_file.__exit__(None, None, None)
except Exception:
  source_file.__exit__(*sys.exc_info())
print('Done!')
 
class Manager: 
    def __enter__(self): 
        print("I've been entered!")
        return 42 
    def __exit__(self, type, value, traceback): 
        print("I've been exited!")
 
with Manager() as something: 
    print("Am I inside?")
    print(something)
  I've been entered!
Am I inside?
42
I've been exited!
with foo() as f, bar() as b:
    ...
  
with foo() as f:
    with bar() as b:
        ...
Вграденият модул contextlib ни предлага три много полезни Context Manager-а:
closingcontextmanagerContextDecoratorcontextlib.closing вика метода close на обекта, с който работим, след изпълнение на блока:
  
class closing(object):
    def __init__(self, thing): self.thing = thing
    def __enter__(self): return thing
    def __exit__(self, type, value, traceback): self.thing.close()
  …и ви позволява да пишете следното:
from contextlib import closing
import codecs
with closing(urllib.urlopen('http://www.python.org')) as page:
    for line in page:
        print(line)
contextmanager е декоратор, който превръща генератор функция в context manager:
  
from contextlib import contextmanager
@contextmanager
def entering(whom):
    print("I've been entered by {0}".format(whom))
    yield "ticket"
    print("I've been exited!")
with entering("someone") as something:
    print("Am I inside?")
    print(something)
  I've been entered by someone
Am I inside?
ticket
I've been exited!Pearl Jam FTW!!!
from contextlib import ContextDecorator
class mycontext(ContextDecorator):
    def __enter__(self):
        print('Starting')
        return self
    def __exit__(self, *exc):
        print('Finishing')
        return False
>>> @mycontext()
... def function():
...     print('The bit in the middle')
def something(foo: 10, bar: 42):
    pass
print(something.__annotations__)
  
def something(foo: 10, bar: 42):
    pass
print(something.__annotations__)
  {'foo': 10, 'bar': 42}
def something(foo: 10, bar: 42) -> 420:
    pass
print(something.__annotations__)
  {'bar': 42, 'foo': 10, 'return': 420}
import inspect
def something(foo: 10, bar: 42) -> 420:
    pass
print(inspect.getfullargspec(something))
# FullArgSpec(args=['foo', 'bar'], varargs=None,
#    varkw=None, defaults=None, kwonlyargs=[],
#    kwonlydefaults=None,
#    annotations={'bar': 42, 'foo': 10, 'return': 420})
лишън!