【问题标题】:Return value from wrapper inside decorator从装饰器内部的包装器返回值
【发布时间】:2014-05-19 15:53:48
【问题描述】:

我定义了以下装饰器:

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

以及用它修饰的以下函数:

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

当 _getServerResponse 被调用时,我需要在装饰器中成为返回变量的“值”,但即使我尝试我也只能返回“无”,就好像值会在包装器调用之间的某个地方丢失一样。

有没有可能的方法来实现我想要做的事情?

提前致谢。

【问题讨论】:

  • 您要返回code 变量吗?
  • 您期望返回什么?你的装饰函数什么都不返回...

标签: python return wrapper decorator


【解决方案1】:

也许你的

# Do stuff

看起来像以下几行:

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

由于您的包装函数返回 None,您将得到 None :)。这只是假设,为了给你 100% 正确的答案,我确实需要更多代码行。

【讨论】:

    【解决方案2】:

    确保您的函数实际返回了某些内容,并且 wrapperIn 函数正在返回该值。

    如果您仍然感到困惑,请进入wrapperIn 中的代码并查看一下。

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 2018-11-28
      • 2011-06-25
      • 2021-06-24
      相关资源
      最近更新 更多