이번 글에서는 short circuit evaluation에 대해 알아볼 것이다.
(출처: 구글 이미지)
표에 나와 있는 숫자 중 0은 False를 뜻하고, 1은 True를 뜻한다.
이들 중 AND, OR 연산에 대해 집중적으로 알아볼 것이다.
python의 True, False 의 상수값들을 가지고 연산하게 될텐데 not, and, or 키워드들을 사용할 것이다.
1. not True == False
2. not False == True
3. True and True == True
4. True and False == False
5. False and True == False
6 False and False == False
7. True or True == True
8. True or False == True
9. False or True == True
10. False or False == False
위 연산결과들 중에 특별히 5,6,7,8 번을 주목할 필요가 있다.
이전 포스팅( #6. True or False )에서도 언급했었지만 and 검사를 하게 되면 두 조건 중 하나라도 False이면 최종 결과는 False이다. 그 말은 처음 검사한 조건부터 False이면 남은 조건을 검사할 필요없이 최종 결과가 False임을 알 수 있다. 남은 조건들까지 검사하면서 드는 시간들을 줄여서 프로그램의 성능을 높일 수 있다면 좋을 것이다. 다행히 python은 조건문 안에서 위처럼 논리적으로 문제가 없다고 판단되는 경우 남은 조건들을 더 검사하지 않고 곧장 다음 명령어들을 실행해버리게 돼있다.
이와 같이 연산해버리는 과정을 short circuit evaluation( link )이라고 부른다.
7,8번에서도 마찬가지로 or 검사의 경우 두 조건 중 하나라도 True 이면 최종 결과가 True 이므로 처음 만난 조건이 True 이면 두 번째 조건은 검사하지 않고 곧장 다음 문장으로 넘어가 버린다.
전부 다 해버리면 재미 없으니까 (...) XOR, NAND, NOR은 남겨둔다.
예시를 살펴보자.
다음 python 코드를 보고 실행되는 결과를 예상해보자.
def p(): print 'p' return False def q(): print 'q' return True def r(): print 'r' return True if True or p(): q() if p() and q(): r() if r() and p(): q() if False or q(): p()
'Lecture (CS) > Introduction' 카테고리의 다른 글
#9. De Morgan's laws (0) | 2015.10.18 |
---|---|
#8. Environment Setting (0) | 2015.10.18 |
#6. True or False (0) | 2015.10.14 |
#4. Instruction (0) | 2015.09.15 |
#3. Top-down Design (0) | 2015.09.13 |