Python 检查函数是否返回了两项

Python 检查函数是否返回了两项,python,python-2.7,Python,Python 2.7,假设我有以下功能: def foo(i): if i == False: return 1, 2 else: return 1 我想检查函数是否返回了两个项,或者仅返回了一个项-如何执行此操作?如果I为True,则当前代码返回int,否则返回元组。您可以使用isinstance检查类型 我认为,根据您收到报税表的方式,您可能会有错误。如果您正确地接收到它,那么在一个或两个非常特殊的情况下,最简单的方法是检查第二个元素是否存在,即如果answer2

假设我有以下功能:

def foo(i):
    if i == False:
        return 1, 2
    else:
        return 1

我想检查函数是否返回了两个项,或者仅返回了一个项-如何执行此操作?

如果I为True,则当前代码返回int,否则返回元组。您可以使用isinstance检查类型


我认为,根据您收到报税表的方式,您可能会有错误。如果您正确地接收到它,那么在一个或两个非常特殊的情况下,最简单的方法是检查第二个元素是否存在,即如果answer2:或检查元组的长度,即answer.length

请记住,如果i为真,则返回一个整数。否则返回一个元组。因此,您可以编写如下测试:

def footest(i):
        if isinstance(foo(i),int):
                print "one item was returned!"
        else:
                print "two items were returned!"

在这里,isinstance是一种类型检查,是typefooi==int的首选版本。

您可以检查返回值的长度,并在有int时捕获TypeError

ret = foo(i)
try:
  if len(ret) == 2:
    print "It's a tuple!"
  else:
    print "Maybe it's a list?"
except TypeError:
  print "It's probably an int!"
请注意,如果您返回了一个列表,那么len将正常工作,而不是抛出一个TypeError,并且您有更多的条件要检查。但是,如果您知道它将是一个元组或一个整数,那么这应该是可行的


正如人们所说,请求原谅比请求允许更容易。

?如果i==False,则不清楚您希望1不使用什么;如果不是,请使用i:代替。2 return不是函数,不要尝试调用它。3 return 1只返回1值,而不是元组。4通常,您不会创建返回不同对象类型的函数;最好总是返回两个元素的元组。戴上我的学究帽,在任何一种情况下都返回一个项目。如果我为真,则返回一个整数。如果i为false,则返回一个元组-f=足部街;2如果isinstancef,则传入True时,tuple else 1函数不返回元组。你会得到一个错误;TypeError:类型为“int”的对象没有len。这是不正确的,为什么要使用一个不起作用的示例,并像显示输出一样显示输出?请注意。。。现在应该修好了对不起,我一直在用java;以上是正确的,Lenanswer你可以用你的答案来纠正,不需要评论。但是请注意fooTrue返回一个整数,一个没有长度的对象。
ret = foo(i)
try:
  if len(ret) == 2:
    print "It's a tuple!"
  else:
    print "Maybe it's a list?"
except TypeError:
  print "It's probably an int!"