在Python中,函数是否知道请求了多少输出?例如,我可以使用通常返回一个输出的函数,但是如果请求了两个输出,它会进行额外的计算并返回它吗?
或者这不是标准的方法吗?在这种情况下,最好避免使用额外的函数参数来提供第二个输入。但我有兴趣学习标准的方法。
答案 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,最好提供两个具有不同返回类型的独立函数,这些函数调用带有参数的私有代码。