[英]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.