如何返回单个值而非元组?
我发现下面的函数中,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()