在python中是否可以检测函数返回值的数量?
我想编写一个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
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
正在返回一个元组,那么为什么要问这个问题呢?