'logical operators'에 해당되는 글 1건

  1. 2015.10.14 #7. Short Circuit Evaluation
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이번 글에서는 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
Posted by CubePenguin
,