我想更改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的方式保持有效吗? 这可能吗?
答案 0 :(得分:12)
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
答案 1 :(得分:2)
通过更改返回值的类型,您将更改此函数与调用它的任何代码之间的“契约”。所以你可能应该改变调用它的代码。
但是,您可以添加一个可选参数,在设置时将返回新类型。这样的改变将保留旧的合同,并允许你有一个新的合同。虽然有不同类型的返回类型很奇怪。在这一点上,完全创建一个新函数或修复调用代码可能会更简洁。
答案 2 :(得分:0)
很抱歉告诉你,但函数重载在Python中无效。由于Python不执行类型实施,因此foo的多个定义会导致使用最后一个有效的定义。一个常见的解决方案是定义多个函数,或者在函数中添加一个参数作为标志(您需要自己实现)