>>> 1 or 1/0
1
>>> any([1, 1/0])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
我认为any()也可以返回True,只要它在可迭代对象中找到第一个True元素即可,但是为什么它仍然检查所有元素?会不会导致运行时间更糟?
答案 0 :(得分:2)
您是正确的,any
确实会短路(仅根据需要进行评估),但正如@alfasin所说,当您尝试将其插入到{ 1/0
。要显示延迟的评估,您必须执行类似我在评论中的内容或
list
或
def itr():
yield 1
yield 1/0
any(itr()) # --> True