問題一覧に戻る
上級高度なパターン
問題108: contextlib活用
@contextmanagerデコレータを使うと、__enter__と__exit__メソッドを定義せずに、ジェネレータ関数でコンテキストマネージャーを作成できます。yield文の前がエントリー処理、後がクリーンアップ処理になります。これにより、with文で使える便利なユーティリティを簡単に作成できます。
# contextlib活用
from contextlib import
# 簡単なコンテキストマネージャー
def my_context():
print("Entering context")
print("Exiting context")
# コンテキストマネージャーを使用
my_context():
print("Inside context")