gpt4 book ai didi

python - 为什么如果第一个元素为真,则 OR 返回 True,但即使第一个元素为真,ANY 仍会检查所有元素

转载 作者:行者123 更新时间:2023-11-28 16:57:46 24 4
gpt4 key购买 nike

>>> 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,但为什么它仍然检查所有元素?这不会导致更糟糕的运行时间吗?

最佳答案

你是对的,any 确实短路(只根据需要评估)但正如@alfasin 所说,你正在创建 1/0 错误当您尝试将其插入 list 时。要显示延迟评估,您必须像我在评论中所说的那样做,或者

def itr():
yield 1
yield 1/0

any(itr()) # --> True

class ErrorOnBool:
def __bool__(self):
raise RuntimeError()


any([1, ErrorOnBool()]) # --> True

关于python - 为什么如果第一个元素为真,则 OR 返回 True,但即使第一个元素为真,ANY 仍会检查所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com