在Python中返回True,False和None

时间:2013-03-24 21:32:22

标签: python

我有函数a调用函数b(返回TrueFalsea),之后函数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 个答案:

答案 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中不是一个好主意。请改用迭代。此外,您没有明确的终止条件。