装饰函数返回多个值

时间:2018-06-21 20:55:52

标签: python

我有以下装饰器:

def my_deco(limit=None):
    def wrap_outer(func):
        def wrap_inner(*args, **kwargs):
                return func(*args, **kwargs)

        return wrap_inner
    return wrap_outer

它通过

调用实际的修饰函数
func(*args, **kwargs)

如果一个函数返回多个值,这将返回一个包含3和4的单个元组。如何保持多值返回行为而不是元组?

@my_deco()
def f(): 
    return 3, 4

1 个答案:

答案 0 :(得分:2)

如注释中所述,Python用于返回多个值的机制是返回一个元组。

在一个简化的示例中,这很容易看到:

def f():
  return 3, 4

print(type(f()))

<class 'tuple'>

而且,还应该注意的是,这并不是通过魔术在幕后发生的;仅3, 4会在函数返回之前创建一个元组。

因此要回答您的问题,这不是问题。两种情况下的行为都相同。