2017-12-24 3 views
0

파이썬 코드 조각에 여러 부분으로 구성된 부울 표현식이 있습니다.이 중 일부는 난수 생성기를 호출하고 2 차원 배열의 합계에 대한 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 

첫 번째 두 표현식 중 하나라도 참이면 난수 생성기가 여전히 호출됩니까? 아니면 순서대로 해당 부분을 평가하고 사실을 찾으면 중단해야합니까?

나는 항상 그것을 깨뜨림으로써 명백하게 만들 수 있지만, 어쨌든 내가 알아야 할 것으로 보인다.

답변

1

if A or B에서 BA이 거짓 일 때만 평가됩니다.

이 개념은 short circuiting라고, 당신은 아이디어는 결과가 결정 때까지 우측 왼쪽에서 당신이 갈 것입니다 그것을 here.

에 대해 조금 읽을 수 있습니다. 일단 그런 경우에, 당신은 멈춘다.

+0

내가 원했을 것입니다. 감사! – KBriggs

관련 문제