파이썬의 식별(Identity) 연산자란?
파이썬에서 is와 is not 연산자는 식별 연산자(identity operators)라고 불립니다. 파이썬 인터프리터는 컴퓨터 메모리에 존재하는 모든 객체에 고유한 식별 번호, 즉 id를 할당합니다. 식별 연산자는 두 객체의 id() 값이 서로 같은지를 비교하는 역할을 합니다.
그중 'is not' 연산자는 두 객체의 id() 값이 서로 다르면 True를 반환하고, 같으면 False를 반환합니다. 쉽게 말해, 두 변수가 메모리상에서 동일한 객체를 가리키고 있는지 아닌지를 판별하는 연산자입니다.
'is not' 연산자 동작 예제
아래 예제를 통해 'is not' 연산자가 실제로 어떻게 작동하는지 확인할 수 있습니다.
>>> a=10 >>> b=a >>> id(a), id(b) (490067904, 490067904) >>> a is not b False
위 코드에서 변수 b는 a에 할당된 객체 그 자체를 참조하므로, 두 객체의 id() 값이 동일합니다. 따라서 a is not b의 결과는 False가 됩니다.
반면, 두 변수가 서로 다른 객체를 참조하는 경우는 다음과 같습니다.
>>> a=10 >>> b=20 >>> id(a), id(b) (490067904, 490068064) >>> a is not b True
이 경우 a와 b는 각각 다른 값을 가지며, 메모리에서 서로 다른 위치에 저장된 별개의 객체입니다. id() 값이 다르기 때문에 a is not b는 True를 반환합니다.
'is not'과 '!='의 차이점
주의할 점은 'is not' 연산자가 값의 동등성을 비교하는 != 연산자와 다르다는 것입니다. !=는 객체의 값이 같은지 비교하지만, 'is not'은 두 이름이 메모리상의 동일한 객체를 가리키는지를 비교합니다. 일반적으로 값 비교에는 !=를, None 여부 확인 등 객체 자체의 비교에는 is not을 사용하는 것이 파이썬의 권장 스타일입니다.