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

파이썬 'is' 연산자의 역할과 동작 원리 완벽 이해하기

파이썬에서 'is' 연산자란 무엇인가?

파이썬에는 isis not이라는 두 가지 정체성 연산자(Identity Operator)가 있습니다. 이 연산자들은 두 객체가 메모리상에서 실제로 같은 객체인지를 판별하는 데 사용됩니다.

파이썬 인터프리터는 컴퓨터 메모리에 존재하는 모든 객체마다 고유한 식별 번호, 즉 id를 부여합니다. 이 값은 내장 함수 id()를 통해 확인할 수 있으며, 일반적으로 객체가 위치한 메모리 주소를 나타냅니다.

'is' 연산자의 동작 방식

정체성 연산자는 두 객체의 id() 값을 비교합니다.

  • 두 객체의 id 값이 같으면isTrue를 반환
  • 두 객체의 id 값이 다르면isFalse를 반환

즉, is는 단순히 값이 같은지가 아니라, 두 이름이 메모리상의 동일한 객체를 가리키고 있는지를 검사하는 것입니다.

예제 코드

>>> a = 10
>>> b = a
>>> id(a), id(b)
(490067904, 490067904)
>>> a is b
True

위 예제에서 b = a는 새로운 객체를 만드는 것이 아니라, 변수 b가 변수 a와 같은 객체를 참조하도록 합니다. 따라서 두 변수의 id 값이 동일하며, a is b의 결과는 True입니다.

>>> a = 10
>>> b = 20
>>> id(a), id(b)
(490067904, 490068064)
>>> a is b
False

반면 위 예제에서는 ab가 서로 다른 값을 가지며, 각각 다른 메모리 위치에 저장된 별개의 객체입니다. 따라서 id 값이 다르고, a is b의 결과는 False입니다.

'is'와 '=='의 차이점

초보자들이 자주 혼동하는 부분 중 하나가 is와 비교 연산자 ==의 차이입니다.

  • ==: 두 객체의 값(value)이 같은지 비교합니다.
  • is: 두 객체의 정체성(identity), 즉 메모리상 동일한 객체인지 비교합니다.

값이 같아도 서로 다른 객체일 수 있으므로, ==True라 해도 is가 반드시 True인 것은 아닙니다. 객체의 동일성을 확인해야 하는 특수한 경우가 아니라면, 일반적인 값 비교에는 ==를 사용하는 것이 바람직합니다.