在Python中返回True、False和None

0 投票
1 回答
168434 浏览
提问于 2025-04-17 20:10

我有一个函数 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 个回答

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 中,对于像这样的迭代程序使用递归并不是个好主意。建议使用迭代方式。此外,你的代码中没有明确的结束条件。

撰写回答