作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
>>> 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/
我是一名优秀的程序员,十分优秀!