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_Function_Output_Overloading - Fatal编程技术网

在python中是否可以检测函数返回值的数量?

在python中是否可以检测函数返回值的数量?,python,function,output,overloading,Python,Function,Output,Overloading,我想编写一个python函数,如下所示: def foo(): if x: return y else: return y, z 可能吗?如果可能,那么如何检测返回值的数量?是的,可能。但是当if条件为false时,函数将返回一个元组,索引0处为y,索引1处为z。您可以捕获元组变量中的返回值,并使用元组的len()函数检查返回值的数量。修改函数以始终返回2元组可能更容易: def foo(): if x: return y, None

我想编写一个python函数,如下所示:

def foo():
   if x:
       return y
   else:
       return y, z

可能吗?如果可能,那么如何检测返回值的数量?

是的,可能。但是当if条件为false时,函数将返回一个元组,索引0处为
y
,索引1处为
z
。您可以捕获元组变量中的返回值,并使用元组的
len()
函数检查返回值的数量。

修改函数以始终返回2元组可能更容易:

def foo():
   if x:
       return y, None
   else:
       return y, z
或者如果没有令人信服的理由,我会怎么做:

def foo( z_default = None):  
   # plug in whatever default makes sense in place of None
   # and the caller can override the default if he wants to
   if x:
       return y, z_default
   else:
       return y, z

是的,很有可能:

def foo():
    if x:
        return y
    else:
        return y, z

result = foo()
the_number_of_return_values_of_foo_function = \
        1 if type(result) is not tuple else len(result)

晚安。

返回一个元组或列表?是的,我知道,但我想知道是否可以这样做?这是为了什么?之后您想对这些数据做什么?这是可能的,您可以检查返回值是否属于
tuple
类型,但这在编程中是一种非常糟糕的做法。考虑返回一个一致的数值,或者至少返回一个元组,通过使用诸如<代码>返回(y),<代码> >您可以在返回的值上尝试<代码> LeN<代码>,但这可能不是有用的。如果函数返回一个列表或两个列表的元组,那么
len
有用吗?顺便说一句,你说你知道可以返回一个元组,但是
returny y,z
正在返回一个元组,那么为什么要问这个问题呢?