python可以有多个返回值吗_在Python中可选的多个返回值

我有一个函数,大多数时候应该返回一个值,但有时我需要从函数返回的第二个值.

Here我发现了如何返回多个值,但是大多数时候我只需要其中一个值,我想写这样的东西:

def test_fun():

return 1,2

def test_call():

x = test_fun()

print x

但调用此结果

>>> test_call()

(1,2)

当试图返回两个以上时,如

def test_fun2():

return 1,2,3

def test_call2():

x,y = test_fun2()

print x,y

我收到一个错误

Traceback (most recent call last):

File "", line 1, in

File "my_module.py", line 47, in test_call2

x,y = test_fun2()

ValueError: too many values to unpack

我正在考虑像matlab这样的东西,其中x = test_fun()会导致x == 1(而[x y] = test_fun()也会按预期工作).在python中有类似的东西吗?

您可以使用星形解包将所有其他返回值收集到列表中:

x, *y = fun()

x将包含第一个返回值. y将是剩余值的列表.如果只有一个返回值,y将为空.此特定示例仅在函数返回元组时才有效,即使只有一个值.

当有趣总是返回1或2个值时,您可以这样做

if y:

print(y[0])

else:

print('only one value')

另一方面,如果要完全忽略返回值的数量,请执行此操作

*x = fun()

现在所有参数都将被收集到列表中.然后你可以用它们打印

print(x)

要么

print(*x)

后者将每个元素作为单独的参数传递,就像您一样

x, y, z = fun()

print(x, y, z)

使用* x = fun()而不仅仅是x = fun()的原因是当函数返回不是元组的东西时立即得到错误.把它想象成一种提醒你正确写作乐趣的断言.

由于这种形式的星形解包仅适用于Python 3,因此Python 2中唯一的选择就是这样做

x = fun()

并手动检查结果.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值