python 检查调用函数是否是来自
python inspect if caller function is a generator from
我想从函数装饰器中检索有关调用方函数的信息。也就是说,我想知道调用函数是否是一个生成器。正在尝试检查外部堆栈框架,但我找不到方法
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
可能吗?或者有一种简单的方法吗?
generator = bool(frame.f_code.co_flags&32)
从一些小测试来看,至少在我的 python3 版本中,生成器在十进制代码框架中设置了标志 32。
您想检查并查看它的可移植性,但至少在 cpython 上可能相当可移植。
我想从函数装饰器中检索有关调用方函数的信息。也就是说,我想知道调用函数是否是一个生成器。正在尝试检查外部堆栈框架,但我找不到方法
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
可能吗?或者有一种简单的方法吗?
generator = bool(frame.f_code.co_flags&32)
从一些小测试来看,至少在我的 python3 版本中,生成器在十进制代码框架中设置了标志 32。 您想检查并查看它的可移植性,但至少在 cpython 上可能相当可移植。