Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中处理函数的多次返回_Python - Fatal编程技术网

在Python中处理函数的多次返回

在Python中处理函数的多次返回,python,Python,我用Python编写了一个包含四个返回值的函数testFunction: diff1,diff2,sameCount,vennPlot 其中,输出元组中的前3个值用于在函数内部绘制vennPlot 有人问了一个类似的问题:,但就我而言,我还想知道另外两件事: 我以后可能会使用这个函数,似乎我需要记住返回的顺序,以便为下游工作提取正确的返回。我说的对吗?如果是这样,有没有比输出[1]或输出[2]更好的方法来引用元组返回?输出=测试函数 一般来说,一个函数有多个输出是否合适?例如,在我的例子中,我可

我用Python编写了一个包含四个返回值的函数testFunction:

diff1,diff2,sameCount,vennPlot 其中,输出元组中的前3个值用于在函数内部绘制vennPlot

有人问了一个类似的问题:,但就我而言,我还想知道另外两件事:

我以后可能会使用这个函数,似乎我需要记住返回的顺序,以便为下游工作提取正确的返回。我说的对吗?如果是这样,有没有比输出[1]或输出[2]更好的方法来引用元组返回?输出=测试函数

一般来说,一个函数有多个输出是否合适?例如,在我的例子中,我可以只返回前三个值,并在函数外部绘制维恩图


要回答第一个问题,可以将函数返回的元组解包为:

diff1, diff2, samecount, vennplot = testFunction(...)

第二,一个函数的多个输出没有什么错,不过为了清楚起见,通常最好避免在同一个函数中使用多个return语句。

要回答第一个问题,可以将函数返回的元组解包为:

diff1, diff2, samecount, vennplot = testFunction(...)

第二,一个函数的多个输出没有错,尽管为了清晰起见,通常最好避免在同一个函数中使用多个返回语句。

从技术上讲,每个函数只返回一个值;但是,该值可以是元组、列表或包含多个值的其他类型

也就是说,您可以返回使用值顺序以外的其他内容来区分它们的内容。您可以返回dict:

def testFunction(...):
    ...
    return dict(diff1=..., diff2=..., sameCount=..., venn=...)

x = testFunction(...)
print(x['diff1'])
或者,您可以定义命名元组:

ReturnType = collections.namedtuple('ReturnType', 'diff1 diff2 sameCount venn')


def testFunction(...):
    ...
    return ReturnType(diff1=..., diff2=..., sameCount=..., venn=...)

x = testFunction(...)
print(x.diff1)  # or x[0], if you still want to use the index

从技术上讲,每个函数只返回一个值;但是,该值可以是元组、列表或包含多个值的其他类型

也就是说,您可以返回使用值顺序以外的其他内容来区分它们的内容。您可以返回dict:

def testFunction(...):
    ...
    return dict(diff1=..., diff2=..., sameCount=..., venn=...)

x = testFunction(...)
print(x['diff1'])
或者,您可以定义命名元组:

ReturnType = collections.namedtuple('ReturnType', 'diff1 diff2 sameCount venn')


def testFunction(...):
    ...
    return ReturnType(diff1=..., diff2=..., sameCount=..., venn=...)

x = testFunction(...)
print(x.diff1)  # or x[0], if you still want to use the index
我以后可能会使用这个函数,似乎我需要记住返回的顺序,以便为下游工作提取正确的返回。我说的对吗

看起来你是正确的,这取决于你的用例

如果是这样,有没有比输出[1]或输出[2]更好的方法来引用元组返回?输出=测试函数

您可以使用namedtuple:

或者-如果顺序不重要-您可以返回一个字典,这样您就可以通过名称访问这些值

一般来说,一个函数有多个输出是否合适?例如,在我的例子中,我可以只返回前三个值,并在函数外部绘制维恩图

当然,只要有文档记录,那么它就是函数所做的事情,程序员知道如何处理返回值

我以后可能会使用这个函数,似乎我需要记住返回的顺序,以便为下游工作提取正确的返回。我说的对吗

看起来你是正确的,这取决于你的用例

如果是这样,有没有比输出[1]或输出[2]更好的方法来引用元组返回?输出=测试函数

您可以使用namedtuple:

或者-如果顺序不重要-您可以返回一个字典,这样您就可以通过名称访问这些值

一般来说,一个函数有多个输出是否合适?例如,在我的例子中,我可以只返回前三个值,并在函数外部绘制维恩图

当然,只要有文档记录,那么它就是函数所做的事情,程序员知道如何处理返回值

Python支持直接解包到变量中。因此,在下游调用函数时,可以将返回值检索到单独的变量中,如下所示:

diff1,diff2,sameCount,vennPlot=testFunction

编辑:你甚至可以吞下你不需要的东西。例如:

diff1,*在中间填充,vennPlot=testFunction

在这种情况下,中间的元素将包含一个2的元组

这非常合适,即使是标准的库模块也会返回元组

例如-来自子流程模块

Python支持直接解包到变量中。因此,在下游调用函数时,可以将返回值检索到单独的变量中,如下所示:

diff1,diff2,sameCount,vennPlot=testFunction

编辑:你甚至可以吞下你不需要的东西。例如:

diff1,*在中间填充,vennPlot=testFunction

在这种情况下,中间的元素将包含一个2的元组

这非常合适,即使是标准的库模块也会返回元组

例如-来自子流程模块

归还
dict这将是您案例的最佳选择。或者,您可能希望研究定义一个类。您的函数返回一个对象,即元组。@Arpitolanki完全不同意。namedtuple是一种典型的方法。返回dict不会对@juanpareturna dict造成伤害。这将是您案例的最佳选择。或者,您可能需要考虑定义一个类。您的函数返回一个对象,即元组。@Arpitolanki完全不同意。一个命名的元组是典型的方式。仍然返回dict不会伤害@juanpa