gpt4 book ai didi

python 检查调用者函数是否是生成器

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:45 27 4
gpt4 key购买 nike

我想从函数的装饰器中检索有关调用者函数的信息。也就是说,我想知道调用者函数是否是生成器。正在尝试检查外部堆栈框架,但我找不到方法

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 上可能是相当可移植的。

关于python 检查调用者函数是否是生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com