python 多个返回值,python一个函数返回多个值

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: