如何返回单个值而非元组?

-2 投票
3 回答
3626 浏览
提问于 2025-04-18 05:58

我发现下面的函数中,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

这可能正是你想要的。使用这种方法时,你至少需要有一个参数,但如果你有更多参数,可以在其他地方处理它们。

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

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

只要*args是一个元组,那么返回args就会返回一个元组,即使里面只有一个参数。

你可能应该这样做:

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

如果你知道这个函数总是会返回一个只有一个元素的元组,你可以用一个元素的元组赋值来处理:

output, = fun(other_func())

或者直接用索引来获取这个元素:

output = fun(other_func())[0]

不过在这种情况下,简单地说一句 别这么做,别返回元组 也许更合适:

output = other_func()

撰写回答