繁体   English   中英

python中的多个返回值

[英]Multiple return values in python

我想更改python函数以返回两个值。 如何实现这一点而不影响任何以前只需要一个返回值的函数调用?

例如。

原始定义:

def foo():
    x = 2
    y = 2
    return (x+y)

sum = foo()

Ne定义:

def foo():
    x = 2
    y = 2
   return (x+y), (x-y)

sum,diff = foo()

我想以前一次调用foo的方式保持有效吗? 这可能吗?

def foo(return_2nd=False):

    x = 2
    y = 2
    return (x+y) if not return_2nd else (x+y),(x-y)

然后调用新版本

sum, diff = foo(True)
sum = foo() #old calls still just get sum

通过更改返回值的类型,您将更改此函数与调用它的任何代码之间的“契约”。 所以你可能应该改变调用它的代码。

但是,您可以添加一个可选参数,在设置时将返回新类型。 这样的改变将保留旧的合同,并允许你有一个新的合同。 虽然有不同类型的返回类型很奇怪。 那时,完全创建一个新函数或修复调用代码可能会更简洁。

很抱歉告诉你,但函数重载在Python中无效。 由于Python不执行类型实施,因此foo的多个定义会导致使用最后一个有效的定义。 一个常见的解决方案是定义多个函数,或者在函数中添加一个参数作为标志(您需要自己实现)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM