問題一覧に戻る
上級高度なパターン
問題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")