SteadyDrills

[TIL]객체의 비교: 동일성(is)과 동등성(==) 본문

PYTHON

[TIL]객체의 비교: 동일성(is)과 동등성(==)

Drills 2024. 7. 22. 23:26

240722

 파이썬의 객체비교

 

'is'(동일성 연산자 (Identity) )

 

'is'는 동일성 연산자로 두 객체가 메모리에서 동일한 위치를 가리키고 있는지 를 확인한다.

주로 객체의 참조를 비교할 때 사용한다. Identity라는 단어 뜻 그대로 본질(정체성)이 같은지 확인하는 것이다.

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)  # False

c = a
print(a is c)  # True

 

 

'==' (동등성 연산자 (Equality))

 

동등성 연산자 '=='두 객체의 값(데이터)이 같은지 비교한다.

이 동등성 연산자를 이용해서 비교할 수 있는 것은 숫자, 문자열, 리스트 등 값을 비교한다.

#list
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # True

#int
c = 1
d = 1
print(c == d) # True

 

 

두 연산자의 차이를 비교해 보자

 

 위 이미지에서 보듯 a와 b는 같은 값을 가지는 리스트이지만, 서로 다른 객체로서 메모리 안에서 다른 주소를 할당받는다.

'is'동일성 비교를 잘못 사용하면 논리 오류나 버그가 발생시킬 수 있으므로 주의해서 사용해야 한다. 특히 가변 객체를 비교할 때 주의해야 한다. 그 이유는 변수에 값을 할당할 때마다 새로운 객체가 생성될 수도 있고 이는 동일성 비교에 영향을 미치기 때문이다.

a = [1, 2, 3]
b = a
print(a is b)  # True, b는 a와 동일한 객체를 가리킴

b = [1, 2, 3]
print(a is b)  # False, b는 새로운 객체를 가리킴