代码之家  ›  专栏  ›  技术社区  ›  user1187968

修饰函数返回多个值

  •  0
  • user1187968  · 技术社区  · 6 年前

    我有以下装修师:

    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 回复  |  直到 6 年前
        1
  •  2
  •   Carcigenicate    6 年前

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

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

    def f():
      return 3, 4
    
    print(type(f()))
    
    <class 'tuple'>
    

    而且,还应该注意到,这不是通过某种魔法在幕后发生的事情; 3, 4 在函数返回之前单独创建一个元组。

    所以回答你的问题,这不是问题。这两种情况下的行为是相同的。