为什么Python的`any`返回一个布尔值而不是结果值?

14 浏览
0 Comments

为什么Python的`any`返回一个布尔值而不是结果值?

`and`和`or`运算符返回它们最后评估的元素,但为什么Python内置的`any`函数不是这样呢?

我的意思是,像这样自己实现它非常容易,但我仍然想知道为什么。

def any(l):
    for x in l:
        if x:
            return x
    return x

编辑:

补充一下下面答案中的内容,这是同一邮件列表上强大的皇帝在该问题上的一句实际引用:

无论是始终返回True和False,还是返回第一个失败/通过的元素?在写博客之前,我也尝试过这样做,并意识到末尾情况(如果序列为空或者所有元素都未通过测试)无法令人满意地工作:如果参数是布尔值的可迭代对象,则选择None感觉奇怪,如果参数是非布尔对象的可迭代对象,则选择False感觉奇怪。

Guido van Rossum(个人主页:http://www.python.org/~guido/

0