Fungsi ini adalah dekorator yang dapat digunakan untuk mendefinisikan fungsi pabrik dengan manajer konteks pernyataan, tanpa perlu membuat kelas atau metode __enter__() dan __exit__() yang terpisah.
@contextlib.contextmanager
from contextlib import contextmanager
@contextmanager
def managed_resource(*args, **kwds):
Code to acquire resource, e.g.:
resource = acquire_resource(*args, **kwds)
try:
yield resource
finally:
Code to release resource, e.g.:
release_resource(resource)
>>> with managed_resource(timeout=3600) as resource:
... Resource is released at the end of this block,
... even if code in the block raises an exception