Python函数可以返回多个值。这些值可以直接存储在变量中。函数不限于返回变量,它可以返回零,一,两个或多个值。
这是python的默认属性,用于返回多个值/变量,而在许多其他编程语言(如C ++或Java)中则不可用。
为了从一个函数返回多个值,我们可以根据需要返回元组,列表或字典对象。
def func(x): y0 = x+ 1 y1 = x * 3 y2 = y0 ** 3 return (y0, y1, y2)
但是,上述程序随着返回的值数量增加而出现问题。如果我们要返回六个或七个值?当然,我们可以继续修改它们,但是很容易忘记哪个值在哪里。而且,无论我们想在哪里接收它们,打开它们的包装都不会太混乱。
另一个更好的解决方案是使用字典。
def func(x): y0 = x+ 1 y1 = x * 3 y2 = y0 ** 3 return {'y0': y0, 'y1': y1, 'y2': y2}
现在,我们有了一种机制,可以投影出返回对象的特定成员。
例如-
result[‘y1’]
另一种选择是使用类,我们可以在其中返回专门的结构。
class ReturnValue(obj): def __init__(self, y0, y1, y2): self.y0 = y0 self.y1 = y1 self.y2 = y2 def g(x): y0 = x + 1 y1 = x * 3 y2 = y0 ** 3 return ReturnValue (y0, y1, y2)
另一种方法是使用列表。
def func(x): result = [x + 1] result.append(x * 3) result.append(y0 ** 3) return result
我们可以选择使用yield来逐个返回多个值的选项,以防万一我们必须返回大量的值,那么使用序列可能会消耗大量系统资源。
def func(x): y0 = x + 1 yield y0 yield x * 3 yield y0 ** 3
这完全取决于您的口味或要求,您更喜欢哪种方法。您可以选择–词典路线,因为它涉及的设置工作较少。或者您可以选择–类路线,因为这可以帮助您避免混淆词典所代表的含义。或者,您可以选择生成器以一一生成值。