装饰器内部的包装函数返回值

0 投票
2 回答
2947 浏览
提问于 2025-04-18 01:42

我定义了一个装饰器:

def _send(code):
    def wrapper(func):
        def wrapperIn(*args, **kwargs):
            # Do stuff
            return value
        return wrapperIn
    return wrapper

还有一个被这个装饰器装饰的函数:

@_send(0)
def _getServerResponse(ID):
    pass

我希望在装饰器中获取到“value”,也就是当调用_getServerResponse时返回的变量。但是不管我怎么尝试,最终得到的结果都是“None”,就好像这个值在调用过程中丢失了一样。

有没有可能实现我想做的事情呢?

提前谢谢你。

2 个回答

0

确保你的函数实际上是有返回值的,并且 wrapperIn 函数也要返回这个值。

如果你还是不明白,可以深入看看 wrapperIn 里的代码。

1

也许你的

# Do stuff

看起来像下面这些代码:

value = func(*args, **kwargs)
return value

因为你包裹的函数返回了一个 None,所以你得到了 None :)这只是我的猜测,要给你一个百分之百正确的答案,我需要更多的代码行。

撰写回答