파이썬에서 is not 연산자는 두 변수가 동일한 객체를 가리키고 있는지를 판별하는 항등(identity) 연산자입니다. 연산자 양쪽의 변수가 서로 다른 객체를 가리킬 때 True를 반환하고, 같은 객체를 가리킬 때 False를 반환합니다.
is not 연산자의 기본 원리
is not은 값을 비교하는 것이 아니라 객체의 메모리 주소(정체성)를 비교한다는 점이 중요합니다. 파이썬의 내장 함수인 id()를 사용하면 각 객체가 저장된 고유한 메모리 주소를 확인할 수 있으며, 이를 통해 두 변수가 실제로 같은 객체인지 판단할 수 있습니다.
사용 예제
>>> a = 10
>>> b = 20
>>> id(a), id(b)
(1581561184, 1581561504)
>>> a is not b
True
예제 해설
위 예제에서 변수 a와 b의 id() 값이 각각 1581561184와 1581561504로 서로 다릅니다. 즉, 두 변수는 메모리상에서 서로 다른 객체를 가리키고 있으므로 a is not b는 True를 반환하게 됩니다.
참고 사항
is not과 반대되는 개념으로 is 연산자가 있으며, 이는 두 변수가 같은 객체를 가리킬 때 True를 반환합니다. 또한 is not은 값 자체를 비교하는 != 연산자와 혼동하기 쉬운데, 일반적인 값 비교에는 !=를 사용하고 객체의 정체성을 확인할 때만 is not을 사용하는 것이 바람직합니다.