在Python中返回True、False和None
我有一个函数 a
,它会调用另一个函数 b
(这个函数会返回 True
或 False
给 a
),然后函数 a
会把结果返回出来,准备打印。
class C:
...
def a(self, data):
p = self.head
return self.b( p,data)
def b(self, p, data):
current = p
if current.data == data:
return True
else:
return False
if __name__=="__main__":
x = C()
print(x.a(1))
有时候它会返回 None,尽管我本来希望它返回 True
。我不太明白这是怎么回事?
1 个回答
9
在没有看到你实际的代码之前,很难说出具体问题。很可能是因为你的函数中有一条代码路径没有执行到 return
语句。当代码走到那条路径时,函数就结束了,但没有返回任何值,所以默认返回 None
。
更新:听起来你的代码大概是这样的:
def b(self, p, data):
current = p
if current.data == data:
return True
elif current.data == 1:
return False
else:
self.b(current.next, data)
那个 else 条件就是你返回 None
的地方。你需要返回递归调用的结果:
else:
return self.b(current.next, data)
顺便说一下,在 Python 中,对于像这样的迭代程序使用递归并不是个好主意。建议使用迭代方式。此外,你的代码中没有明确的结束条件。