说我有这个功能:
def foo(i):
if i == False:
return 1, 2
else:
return 1
我想检查函数是否返回了两个项目,或只是一个 - 我该怎么做?
答案 0 :(得分:1)
请注意,如果i
为True
,则会返回整数。否则,您将返回元组。所以你可以写一个这样的测试:
def footest(i):
if isinstance(foo(i),int):
print "one item was returned!"
else:
print "two items were returned!"
此处,isinstance
是类型检查,是type(foo(i))==int
的首选版本。
答案 1 :(得分:1)
您可以检查返回值的长度,并在遇到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
,并且您有更多条件需要检查。但是如果你知道它将是一个元组或一个整数,那么这应该可行。
正如他们所说,请求宽恕比获得更容易。
答案 2 :(得分:-1)
如果int
为i
,您当前的代码会返回True
,否则会返回tuple
。您可以使用isinstance
>>> isinstance(foo(False), int) # foo(False) is a tuple, so this should be False
False
>>> isinstance(foo(True), int) # foo(True) is an int, so this should be True
True
答案 3 :(得分:-1)
我认为根据您收到退货的方式,您可能会遇到错误。如果你正确地接收它,在这个非常具体的一两个例子中的简单方法是检查第二个元素是否存在,即如果回答(2):或检查你的元组的长度,answer.length。