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

Python ID 연산자 완벽 정리: is와 is not의 차이점과 동작 원리

Python ID 연산자란 무엇인가?

Python에서 모든 객체는 메모리에 저장되는 순간 고유한 식별 번호(identity number)를 부여받습니다. 이 식별 번호는 내장 함수인 id()를 통해 언제든지 확인할 수 있습니다.

Python에는 이러한 객체의 고유성을 비교하는 ID 연산자가 두 가지 있습니다. 바로 isis not입니다.

1. is 연산자

is 연산자는 두 객체의 id() 값을 비교합니다. 두 객체가 메모리상에서 동일한 위치, 즉 같은 객체를 가리키고 있다면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

2. is not 연산자

is not 연산자는 is의 반대 동작을 수행합니다. 두 객체의 id() 값이 같으면 False를, 다르면 True를 반환합니다.

ID 연산자의 실제 동작 예시

아래 인터프리터 실행 예제를 통해 두 연산자의 동작 방식을 직접 확인해 보겠습니다.

>>> a = 10
>>> b = a
>>> id(a), id(b)
(1581561184, 1581561184)
>>> a is b
True
>>> a is not b
False

>>> a = 10
>>> b = 20
>>> id(a), id(b)
(1581561184, 1581561504)
>>> a is b
False
>>> a is not b
True

첫 번째 예제에서 변수 ba를 그대로 할당받았기 때문에 두 변수는 동일한 객체를 참조하며, id() 값도 같습니다. 따라서 a is bTrue를 반환합니다.

반면 두 번째 예제에서 ab는 서로 다른 값을 가지므로 각각 다른 메모리 위치에 저장되고, id() 값도 다릅니다. 결과적으로 a is bFalse, a is not bTrue가 됩니다.

참고: == 연산자와 is 연산자의 차이

많은 초보자가 혼동하는 부분 중 하나는 == 연산자와 is 연산자의 차이입니다. ==는 두 객체의 값(value)이 같은지 비교하는 반면, is는 두 객체가 메모리상 동일한 객체인지, 즉 정체성(identity)을 비교합니다. 따라서 값이 같더라도 서로 다른 객체라면 is 연산의 결과는 False가 될 수 있습니다.