【发布时间】: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