앞의 코드는 비교 연산자와 논리 연산자를 함께 사용합니다. 첫 번째 코드에서 and 연산자 왼쪽 수식은 3이 0보다 크므로 참입니다. 왼쪽 수식은 3이 5보다 작으므로 거짓입니다. 모두 참이어야 하는데 하나만 참이므로 결과는 거짓, 즉 False를 출력합니다. 두 번째 코드는 같은 구조에서 연산자만 or로 바꿨습니다. or 연산자는 하나라도 참이면 참이므로 True를 출력합니다. 세 번째 코드는 not 연산자를 사용해 수식을 부정합니다. 수식은 1과 3이 다르다는 뜻이므로 참입니다. 참을 부정하므로 결과로 False를 출력합니다.
참고로 a > b > c처럼 연산자를 연달아 사용할 수도 있습니다. 이 수식은 a > b and b > c와 같습니다.
Note 단축 평가
논리 연산자에서 and와 or는 앞의 연산 결과에 따라 뒤의 연산이 수행되지 않을 수도 있는데, 이를 단축 평가(short circuit evaluation)라고 합니다. and 연산자는 앞뒤 연산이 모두 참일 때 True가 됩니다. 그래서 앞의 연산이 이미 False라면 뒤의 연산은 결과가 참이건 거짓이건 상관없으므로 수행되지 않습니다. or 연산자는 앞뒤 연산 중 하나라도 참일 때 True가 되는데 앞의 연산이 이미 True 라면 뒤의 연산은 하지 않아도 상관없으므로 수행되지 않습니다. 다음 예를 봅시다.
print(5 > 4 > 3)
print(4 > 5 > 3)
실행결과 |
True False |
첫 번째 코드에서 5 > 4는 참이므로 다음 수식을 확인합니다. 4 > 3도 참이므로 결과는 True가 됩니다. 그런데 두 번째 코드를 보면 4 > 5는 거짓이므로 뒤의 연산 결과에 상관없이 False가 됩니다. 따라서 뒤의 수식을 수행하지 않고 결과를 출력합니다.