더북(TheBook)

4.2.16 is 연산자는 정확하게 사용한다

파이썬은 동등 비교 연산자(==)와 is 연산자를 모두 지원한다. 두 결과는 같을 때도 있지만, 다를 때도 있다. 만약 두 문자열이 같은 값을 가지고 있다면 동등 비교 연산자는 항상 True를 반환한다.

a = 'cat'
b = 'cat'
a == b     # 반드시 True 반환

하지만 is 연산자는 두 문자열이 같은 값을 가지고 있다고 하더라도 문자열 비교 결과가 항상 True일 것이라고 보장할 수 없으며, 이 결과에 의존하기에는 리스크가 크다. 똑같이 만들어진 문자열 또한 동등 비교 연산자 대신 is 연산자를 사용하여 값을 비교하는 경우, 결과가 True일 것이라고 보장할 수 없다. 다음 예시를 살펴보자.

>>> s1 = 'I am what I am and that is all that I am.'
>>> s2 = 'I am what I am' + ' and that is all that I am.'
>>> s1 == s2
True
>>> s1 is s2
False

이 예시를 통해서 두 문자열이 같은 내용을 가지고 있다고 하더라도 메모리상에 동일한 객체를 참조하고 있지 않을 수도 있다는 것을 알 수 있으며, 이런 경우 is 연산자는 False를 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.