当前位置: 首页 > 面试题库 >

是否所有(列表)都使用短路评估?

贾沛
2023-03-14
问题内容

我希望使用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

因此,当它为returnFalse时,该函数立即中断。



 类似资料:
  • 问题内容: 我想知道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代替逻辑可以提供某种解决方法,但是理想情况下,我