我有函数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
。我不确定发生了什么事?
答案 0 :(得分:7)
如果没有看到您的实际代码,就无法说出来。可能原因是通过函数的代码路径不执行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)
BTW:对于像这样的迭代程序使用递归在Python中不是一个好主意。请改用迭代。此外,您没有明确的终止条件。