为什么Python的`any`返回一个布尔值而不是结果值?
- 论坛
- 为什么Python的`any`返回一个布尔值而不是结果值?
14 浏览
为什么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/)