Python函数知道请求了多少输出吗?

时间:2016-02-14 07:34:02

标签: python

在Python中,函数是否知道请求了多少输出?例如,我可以使用通常返回一个输出的函数,但是如果请求了两个输出,它会进行额外的计算并返回它吗?

或者这不是标准的方法吗?在这种情况下,最好避免使用额外的函数参数来提供第二个输入。但我有兴趣学习标准的方法。

2 个答案:

答案 0 :(得分:7)

真实而简单的答案是:否。

Python函数/方法不知道请求了多少输出,因为在函数调用之后发生了返回元组的解包。

最好的做法是使用下划线(_)作为占位符,用于在不需要时从函数返回的未使用的args,例如:

def f():
    return 1, 2, 3

a, b, c = f()  # if you want to use all
a, _, _ = f()  # use only first element in the returned tuple, 'a'
_, b, _ = f()  # use only 'b'

例如,当使用下划线(_)时,pylint将禁止任何未使用的参数警告。

答案 1 :(得分:5)

Python函数总是返回1个值。

在这种情况下:

def myfunc():
    return

该值为None。在这种情况下:

def myfunc():
    return 1, 2, 3

该值是元组(1,2,3)。

所以这个功能没有什么可以知道的,真的。

至于返回由参数控制的不同输出,我总是围绕着这个问题。这取决于实际的用例。对于其他人使用的公共API,最好提供两个具有不同返回类型的独立函数,这些函数调用带有参数的私有代码。