python 多个返回值,python一个函数返回多个值
在支持它的语言中,返回多个值的规范方法通常如下
排好队。
可选:使用元组
想想这个小例子:
deff(x):
y0=x 1
y1=x * 3
y2=y0 ** y3
return(y0,y1,y2))。
但是,如果返回值的数量增加,问题很快就会出现。返回四五个值怎么办?当然,你可以把它们放在一起,但是很容易忘记哪个值在哪里。也挺丑的。即使你想接受它们,也请打开它们。
可选:使用字典。
下一个合乎逻辑的步骤似乎是引入某种“记录符号”。在python中,最明显的方法是通过dict。
请考虑以下情况:
定义(x):
y0=x 1
y1=x * 3
y2=y0 ** y3
返回{y0: y0, y1:y1, y2:y2}
(编辑-为清楚起见,y0、y1和y2仅用作抽象标识符。正如所指出的,在实践中,使用有意义的标识符)
这里有一个机制来计算返回对象的具体成员。举个例子,
结果[y0]
可选:使用类。
然而,还有另一种选择。我们可以回到特殊结构。虽然我已经在Python的上下文框架中,但我确信它也适用于其他语言。其实如果你在C工作,这可能是你唯一的选择。开始:
类返回值(对象):
def__init_(self,y0,y1,y2):
self.y0=y0
self.y1=y1
self.y2=y2
定义(x):
y0=x 1
y1=x * 3
y2=y0 ** y3
返回值(y0,y1,y2))。
在python中,就管道而言,前两者可能非常相似。也就是说,{y0,y1,y2}是最后ReturnValue里面__dict__的条目。
对于小对象,Python还提供了其他函数:__slots__ property。类别可以表示为:
类返回值(对象):
__slots__=[y0 , y1 , y2]
def__init_(self,y0,y1,y2):
self.y0=y0
self.y1=y1
self.y2=y2
_ _ slots _ _ declarationtakesasequenceofinstancevariablesandreserves justenoughspaceinachinstancetoholdavalueforeachvoreachvvvvold
可选:使用列表
我忽略的另一个建议来自Bilt Lizard:
defh(x):
结果=[x 1]
result.append(x*3))
result.append(y0**y3)).
返回结果
这是我最讨厌的方法。我感觉我已经被接触Haskell污染了,混合类型列表的想法一直让我不舒服。在这个具体的例子中,列表不是混合的,但是可能有以下几种情况:这样使用的列表实际上对于元组什么也得不到。只要我能教书。Python列表和元组之间唯一的区别是列表是可变的,而wheras元组不是。就个人而言,我倾向于继承函数式编程的惯例,它使用任意数量的相同类型元素的列表和固定数量元素的元组。
问题
冗长的前言之后,必然有问题。你认为哪种方法最好?
我发现我一般会去查路由字典。因为它涉及较少的设置工作。但是从类型的角度来说,为了不混淆字典的意思,类路由可能更好。另一方面,Python社区中的一些人会觉得隐式接口应该优先于显式接口。这是因为,如果依赖基本相同的属性,总会有一个意思相同的约定。
那么,如何在python中返回多个值呢?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。