呼び出し元関数に関する関数のデコレータ内から情報を取得したいと考えています。つまり、呼び出し元関数がジェネレータであるかどうかを知りたい。外側のスタックフレームの検査を試みていましたが、私はそれを行う方法を見つけることができませんでしたPython呼び出し元関数がジェネレータであるかどうかを調べる
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
inspect.isgeneratorfunction(func) ### THIS WORKS
frame = inspect.currentframe().f_back
### HERE THE MAGIC
return wrapper
可能でしょうか?それとも簡単な方法がありますか?
これで何をしようとしていますか?なぜあなたのことを知る必要がありますか? –
いくつかの単語があります:関数の呼び出し方法に応じてデコレータの動作を変更しようとしています – akasi