【问题标题】:order of evaluation of boolean expression in python [duplicate]python中布尔表达式的评估顺序[重复]
【发布时间】:2018-06-06 02:01:08
【问题描述】:

我在一段 python 代码中有一个多部分的布尔表达式,其中一部分涉及对随机数生成器的调用并评估二维数组之和的指数。由于这深埋在嵌套循环中,我想尽可能避免检查最后一部分,因为它的计算成本很高。

if self.B == 0 or (np.sign(self.B) == -sign) or (np.random.rand() < np.exp(-2*sign*self.B*np.sum(cluster))):
    do stuff

如果前两个表达式中的任何一个为真,随机数生成器还会被调用吗?还是保证按顺序评估这些部分并在找到正确的部分后停止?

我总是可以通过分解来明确表达,但这似乎是我应该知道的事情。

【问题讨论】:

    标签: python python-2.7 boolean-expression short-circuiting


    【解决方案1】:

    if A or B 中,B 仅在A 为假时才被评估。

    这个概念叫做short circuiting,你可以阅读一下here.

    这个想法是你从左到右直到一个结果被确定。一旦出现这种情况,你就停下来。

    【讨论】:

    • 这就是我所希望的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多