我在一段python代码中有一个多部分布尔表达式,其中一部分涉及调用随机数生成器并评估二维数组之和的expoenential。由于这深埋在嵌套循环中,我想避免检查最后一个部分,如果可能的话,因为它的计算成本很高。
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
如果前两个表达式中的任何一个为真,那么随机数生成器是否仍会被调用?或者保证按顺序评估这些部分,并在找到一个真实的部分后停止?
我总是可以通过分解它来明确表达,但这似乎是我应该知道的事情。
答案 0 :(得分:2)