首页 > 编程知识 正文

python如何返回两个返回值,python如何输入多个值

时间:2023-05-06 09:23:28 阅读:163003 作者:259

用支持它的语言返回多个值的规范方法通常如下

打线。

可选:使用元组

想想这个小例子:

deff(x ) :

y0=x 1

y1=x * 3

y2=y0 ** y3

return(y0,y1,y2 ) )。

但是,如果返回值的数量增加,问题很快就会出现。 如果我返回四个或五个值,我该怎么办? 当然,你可以tupling他们,但是很容易忘记哪个值是哪里。 这也相当丑陋。 即使你想接受他们,也请打开他们。

可选:使用词典

下一个逻辑步骤似乎是引入某种“记录符号”。 在python中,明显的方法是通过dict。

考虑以下事项:

defg(x ) :

y0=x 1

y1=x * 3

y2=y0 ** y3

返回{ ' y0 ' : y0,' y1':y1,' y2':y2 }

(编辑-为了清楚起见,y0、y1和y2仅用作抽象标识符。 正如所指出的,在实践中,使用有意义的标识符)

这里有一种计算返回对象的特定成员的机制。 例如,

result['y0']

可选:使用类

但是,还有一个选择。 我们可以回到特别的结构。 虽然我已经在Python的上下文框架中了,但我确信它也适用于其他语言。 其实,如果你在C工作,这可能是你唯一的选择。 开始:

类返回值(object ) :

def__init_(self,y0,y1,y2 ) :

self.y0=y0

self.y1=y1

self.y2=y2

defg(x ) :

y0=x 1

y1=x * 3

y2=y0 ** y3

返回值(y0,y1,y2 ) )。

在python中,前两个在管道方面可能非常相似。 也就是说,{y0,y1,y2}刚结束时是ReturnValue内部__dict__的条目。

对于小对象,Python还提供了其他功能: __slots__属性。 类可以表示为:

类返回值(object ) :

__slots__=['y0 ',' y1 ',' y2']

def__init_(self,y0,y1,y2 ) :

self.y0=y0

self.y1=y1

self.y2=y2

the _ _ slots _ _ declarationtakesasequenceofinstancevariablesandreservesjustenoughspaceineachinstancetoholdavalueforeachvoreachvachvvvvold

可选:使用列表

我忽略的另一个建议来自比尔特蜥蜴:

defh(x ) :

result=[x 1]

result.append(x*3) )

result.append(y0**y3 ) )。

返回结果

这是我最讨厌的方法。 我觉得我暴露在Haskell中被污染了,混合类型列表的想法一直让我感到不舒服。 在此具体示例中,列表不是混合型的,但可能存在以下情况: 这样使用的列表对元组来说实际上一无所获。 只要我能教。 Python列表和元组的唯一区别在于列表是mutable,而wheras元组不是。 我个人倾向于继承使用相同类型的任意数量的元素的列表和固定数量的元素的元组这一函数式编程的约定。

问题

冗长的序言之后,出现了不可避免的问题。 你觉得哪个方法最好?

我发现我通常去路由词典。 因为它涉及到更少的设定工作。 但是从类型的角度来看,为了不混淆词典的意思,也许可以更好地进行类路由。 另一方面,Python社区中有些人会感觉到impliedinterfacesshouldbepreferredtoexplicitinterfaces。 这是因为,如果依赖基本上相同的属性,就会永远有同样意义的约定。

那么,如何在python中返回多个值?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。