我希望使用Pythonall()
函数来帮助我进行计算,但是如果all()
击中a时不立即求值,则该过程可能会花费更长的时间False
。我认为这可能是经过短路评估的,但我只是想确定一下。另外,有没有一种方法可以在Python中说明如何评估函数?
是的,它会短路:
>>> def test():
... yield True
... print('one')
... yield False
... print('two')
... yield True
... print('three')
...
>>> all(test())
one
False
如果iterable的所有元素都为true(或者iterable为空),则返回True。相当于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
因此,当它为return
False时,该函数立即中断。
问题内容: 我想知道JavaScript是否具有C#中的&&运算符之类的“短路”评估。如果没有,我想知道是否有一种合理的解决方法可以采用。 问题答案: 是的,JavaScript具有“短路”评估。
问题内容: 给出以下代码: 如果返回,php解释器是否还会检查以后的条件,例如? 如果是这样,那么为什么它在不需要时会做额外的工作呢? 问题答案: 是的,PHP解释器是“惰性”的,这意味着它将尽可能少地进行比较以评估条件。 如果要验证,请尝试以下操作:
我相信C#一旦能够判断结果,就会停止评估if语句条件。例如: 由于条件
问题内容: 我正在尝试优化执行以下操作的查询: 该查询计划表明,即使在100%的行满足WHEN子句的情况下,也有相当多的时间花费在ELSE分支中对结果的调用上。 我能理解的唯一方法是假定SQLServer正在评估两个结果,然后仅基于对WHEN条件的评估来选择一个,但是我找不到关于CASE结果是否有任何确定的参考语句在条件语句之前进行评估。任何人都可以澄清或指向我参考吗? 问题答案: 那是实际的还是
问题内容: 是否在SQL WHERE子句中对布尔表达式进行短路求值 ? 例如: 如果 @key IS NULL的 计算结果为true,则 @key不是NOT AND @key = t.Key的 计算结果吗? 如果否,为什么不呢? 如果是,是否可以保证?它是ANSI SQL的一部分还是特定于数据库的? 如果是特定于数据库的SqlServer?甲骨文?MySQL的? 问题答案: ANSI SQL草稿2
问题内容: 说我有这样的代码: 通常,仅当所有其他调用a()-d()返回true时,才调用e()。是否可能有一些编译器或JVM选项来禁用短路评估,所以无论其他函数的结果如何,都将始终调用e()? 基本上我正在做一个大型系统的UAT,需要测试e(),但是设置确保所有a(),b()等返回true的环境和场景都是非常痛苦的… 编辑:好的,我猜想使用位AND代替逻辑可以提供某种解决方法,但是理想情况下,我