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

时间:2016-05-10 05:45:39

标签: python function output overloading

我想写一个像这样的python函数:

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

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

3 个答案:

答案 0 :(得分:1)

修改函数以始终返回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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

是的,很有可能:

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(tuple)

晚安。