サイトアイコン Python Snippets

with文で使えるコンテキストマネージャー型を作成する

openの時のようにwith文を使えるようにするには、contextlibモジュールのcontextmanagerデコレータを使えば簡単に実装できます。

openの時の例

with open('hoge.txt') as f:
    f.read()
# withブロックを抜けるとファイルclose

contextmanagerを使用した例

from contextlib import contextmanager
@contextmanager
def myfunc():
    print('前処理')
    yiled  #ここで処理が中断
    print('後処理')

# with文で使ってみる。
with myfunc():
    print(1+2)

# 前処理
# 3
# 後処理
関連記事:

モバイルバージョンを終了