[環境] + OS Ubuntu 16.04 + Python 3.5.2 Pythonで以下のようなデコレータを定義したとします。 def trace(f): @functools.wraps(f) def wrapper(*args, **kwargs): print('Enter Func') try: ret = f(*args, **kwargs) except: print('EXCEPTION') raise print('Leave Func') return ret return wrapper このデコレータは通常の関数であれば期待通り動作します。 def func(): print('Hello') func = trace(func) func() << Enter Func << Hello << Leave Func しかし、ジェネレータ関数に対しては、期待通り
![Pythonでジェネレータ関数に前処理,後処理を行うデコレータを適用したい](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6bc393cd0b6bd2196935e603c5d031bd6ca6699/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fja%2FImg%2Fapple-touch-icon%402.png%3Fv%3D1cfb10b305ca)