我想写一个像这样的python函数:
def foo():
if x:
return y
else:
return y, z
有可能吗?如果可能,那么如何检测返回值的数量?
答案 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)
晚安。