Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 비교 연산자 연결(Chaining) 완벽 정리

프로그래밍을 하다 보면 하나의 문장 안에서 두 개 이상의 조건을 동시에 검사해야 하는 경우가 자주 발생합니다. 이럴 때 사용할 수 있는 기본 문법으로는 x < y < z처럼 조건을 이어 쓰는 방식과, x < y and x < z처럼 논리 연산자로 묶는 방식이 있습니다.

파이썬의 기본 비교 연산자

다른 프로그래밍 언어와 마찬가지로 파이썬에도 다양한 비교 연산자가 제공됩니다. 대표적인 비교 연산자는 다음과 같습니다.

  • <, <=, >, >= : 크기 비교
  • ==, != : 값의 동등성 비교
  • is, is not : 객체의 동일성(identity) 비교
  • in, not in : 멤버십(포함 여부) 검사

비교 연산자의 우선순위

위 연산자들은 서로 우선순위가 모두 같으며, 산술 연산자·비트 연산자·시프트 연산자보다는 낮은 우선순위를 가집니다.

비교 연산자 연결(Chaining)의 원리

파이썬에서는 비교 연산자를 임의로 나열해 하나의 체인(chain)처럼 사용할 수 있습니다. 예를 들어 x < y < z라는 표현식은 x < y and y < z와 완전히 동일하게 평가됩니다.

일반화하면, 피연산자가 p1, p2, ..., pn이고 연산자가 OP1, OP2, ..., OPn-1일 때, 전체 표현식은 다음과 같이 해석됩니다.

p1 OP1 p2 and p2 OP2 p3 and ... and pn-1 OPn-1 pn

즉, 각 피연산자는 자신의 양옆에 있는 연산자와 한 번씩만 비교되며, 중간 값은 단 한 번만 평가된다는 점이 일반적인 and 조건문과의 차이점입니다.

예제 코드 1

a = 10
b = 20
c = 5
# c < a < b 는 c < a and a < b 와 동일
print(c < a)
print(a < b)
print(c < a < b)
# b는 40과 60 사이에 속하지 않음
print(40 <= b <= 60)
# a는 10이고, c보다 큼
print(a == 10 > c)

실행 결과

True
True
True
False
True

예제 코드 2

u = 5
v = 10
w = 15
x = 0
y = 7
z = 15
# w는 z와 같지만 v와는 다르며, v는 x보다 크고 x는 y보다 작음
print(z is w is not v > x < y)
# w와 z가 같은지, 그리고 x < z > y 인지 확인
print(x < w == z > y)

실행 결과

True
True

정리

파이썬의 비교 연산자 연결 기능을 활용하면 수학적 부등식처럼 직관적으로 조건을 작성할 수 있어 코드의 가독성이 크게 향상됩니다. 다만 isin 같은 연산자가 섞인 복잡한 체인은 의도를 오해하기 쉬우므로, 필요하다면 괄호를 사용하거나 and로 명시적으로 표현하는 것이 좋습니다.