【问题标题】:How to return a single value instead of a tuple?如何返回单个值而不是元组?
【发布时间】:2014-06-27 03:39:34
【问题描述】:

我意识到在下面的函数中f 返回一个元组,g 返回一个列表。

def f():
    return 1,2
def g():
    return [1,2]
a,b=f()
c,d=g()

我编写了一个可以处理任意数量参数的函数。

def fun(*args):
    return args

这些参数像上面的f 函数一样输入,因为它们是前一个函数的返回值。

output = fun(other_func())

当从fun 返回多个值时,可以通过声明类似这样的内容来检索各个值...

output1, output2 =  fun(other_func())

但是,当使用一个参数时,输出如下所示...

output = fun(other_func())

(1,)

当只有一个值时,有没有办法让它返回单个元素而不是元组,但仍然具有能够返回多个值的功能?

【问题讨论】:

  • 要使元组分配起作用,您通常知道需要多少个值。你总是可以使用output, = fun(other_func()),或者只是不返回一个元组。

标签: python function return tuples


【解决方案1】:

如果你知道函数总是会返回一个单元素元组,你可以使用单元素元组赋值:

output, = fun(other_func())

或者简单的索引:

output = fun(other_func())[0]

但在这种情况下,一个简单的不要那样做,不要返回元组也可能适用:

output = other_func()

【讨论】:

    【解决方案2】:

    只要*args 是一个元组,返回args 就会因此返回一个元组,即使只有一个参数。

    你可能应该这样做:

    def fun(*args):
        if len(args) == 1:
            args, = args
        return args
    

    【讨论】:

      【解决方案3】:

      这可能是您正在寻找的。使用此方法,您必须至少有一个参数,但如果您有更多参数,您将在 other 中捕获其他参数。

      def funct(*args):
          return args
      # end funct
      
      if __name__ == '__main__':
          foo, *other = funct(1, 2, 3, 4)
          print(foo)
      

      【讨论】:

        猜你喜欢
        • 2020-12-28
        • 2020-08-22
        • 1970-01-01
        • 2017-07-16
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多