如何返回单个值而不是元组?

时间:2014-05-09 11:51:11

标签: python function return tuples

我意识到在下面的函数中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,)

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

3 个答案:

答案 0 :(得分:2)

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

output, = fun(other_func())

或只是索引:

output = fun(other_func())[0]

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

output = other_func()

答案 1 :(得分:0)

只要*args是一个元组,返回args将返回一个元组,即使只有一个参数。

你应该做的事情如下:

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

答案 2 :(得分:0)

这可能就是你要找的东西。使用此方法,您必须至少有一个参数,但如果您有更多参数,则会在其他参数中捕获其他参数。

def funct(*args):
    return args
# end funct

if __name__ == '__main__':
    foo, *other = funct(1, 2, 3, 4)
    print(foo)