在Python中返回True,False和None

duc*_*uck 0 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))
Run Code Online (Sandbox Code Playgroud)

有时它会返回None,尽管它应该是True.我不确定发生了什么?

Ned*_*der 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)
Run Code Online (Sandbox Code Playgroud)

那条别条款是你的None道路.您需要返回递归调用返回的值:

    else:
        return self.b(current.next, data)
Run Code Online (Sandbox Code Playgroud)

顺便说一句:在Python中使用这种迭代程序的递归并不是一个好主意.请改用迭代.此外,您没有明确的终止条件.