返回不同数量的变量,具体取决于

2024-04-27 04:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,函数是否可能根据调用方返回不同数量的变量?在

我是一个Matlab程序员,在这种语言中它被广泛使用,但我想知道python是否也有这个选项,它是否是一个很好的编程实践。在

Matlab示例:

minval      = min([5,2,7,1,6])   % will only return the min value
minval, idx = min([5,2,7,1,6])   % will return the min value and the index

这里的min函数只是一个例子(我的函数与计算min值无关)。在

我想创建一个函数,在90%的情况下只使用第一个返回值(比如在min中,有时您不关心索引,只需要值本身)。在

当然,每次我都可以用2个返回值强制调用,但是我认为如果您可以只使用一个返回值或根据您的需要使用2个返回值来调用它,则会更干净、更好。在

我看到了一些有趣的建议,关于传递一个带有默认值的标志来告诉函数预期有多少个输出,但是我正在寻找完全透明的东西。在


Tags: the函数语言示例数量returnvalue选项
2条回答

当然可以!只需准备一个empy列表并使用它来接收不同数量的值。看看我的例子:

def foo(number):
    if number < 0:
        return "more","values","returned"
    else:
        return "single value"

num = 5
myList = foo(num)

没有标准的Python方法可以做到这一点;Python函数通常不知道调用它的上下文。在

我不想说这是不可能的,因为有很多方法可以返回堆栈跟踪、检查代码对象等等,谁知道呢,它可能在某种程度上是可能的,但在某种程度上却不是你想要实际使用的方式。在

在Python中,您可以传递一个带有默认值的选项,这样在正常情况下就不必传递它了:

def min(iterable, return_index=False):
    ...

minval = min([5,2,7,1,6])
minval, i = min([5,2,7,1,6], return_index=True)

或者你总是把两者都返回,而忽略其中一个:

^{pr2}$

相关问题 更多 >