python – 可选的多个返回值
发布时间:2020-12-20 12:13:58 所属栏目:Python 来源:网络整理
导读:我有一个函数,大多数时候应该返回一个值,但有时我需要从函数返回的第二个值. Here我发现了如何返回多个值,但是大多数时候我只需要其中一个值,我想写这样的东西: def test_fun(): return 1,2def test_call(): x = test_fun() print x 但调用此结果 test_call
我有一个函数,大多数时候应该返回一个值,但有时我需要从函数返回的第二个值.
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 "<stdin>",line 1,in <module> 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,z) 使用* x = fun()而不仅仅是x = fun()的原因是当函数返回不是元组的东西时立即得到错误.把它想象成一种提醒你正确写作乐趣的断言. 由于这种形式的星形解包仅适用于Python 3,因此Python 2中唯一的选择就是这样做 x = fun() 并手动检查结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |