본문 바로가기
Python

[Python] is와 ==의 차이

by teamnova 2025. 11. 26.
728x90

안녕하세요.

오늘은 파이썬에서 두 변수를 비교할때 사용하는 값 비교(==)와 객체 비교(is), 그리고 이를 증명하는 id() 함수에 대해 알아보겠습니다.

 

파이썬 코드를 작성하다 보면 두 변수를 비교할 때가 많습니다. 

보통은 등호 두 개(==)를 사용하지만, 가끔 is라는 연산자를 보게 됩니다.


두 변수를 비교한다는 동일한 작업을 하는것 처럼 보여도, 파이썬 내부에서는 완전히 다른 로직으로 동작합니다.

 

== 연산자: 값 비교( Equality)

== 연산자는 동등성(Equality)을 비교합니다.

즉, 내용물(Value)이 같은지를 확인합니다.

list_a = [1, 2, 3]
list_b = [1, 2, 3]

print(list_a == list_b) # True (내용물이 같으니까)

 

 is 연산자 : 객체 비교 (Identity)

is 연산자는 정체성(Identity)을 비교합니다.

즉, 메모리 상에서 완전히 동일한 객체인지를 확인합니다.

이것을 눈으로 확인시켜 주는 함수가 바로 id()입니다.

id()는 객체의 고유한 메모리 주소값을 반환합니다.

a is b는 내부적으로 id(a) == id(b)와 같습니다.

 

 

예제

# 내용은 같지만 별도로 생성된 두 리스트
a = [1, 2, 3]
b = [1, 2, 3]

# 1. 값 비교 (==)
print(f"a == b : {a == b}") 
# 결과: True (내용물은 [1, 2, 3]으로 똑같음)

# 2. 객체 비교 (is)
print(f"a is b : {a is b}") 
# 결과: False (서로 다른 메모리 공간에 만들어짐)

# 3. 주소값 확인 (id)
print(f"id(a): {id(a)}") # 예: 28147832
print(f"id(b): {id(b)}") # 예: 28147999 (주소가 다름!)

 

결과 

a == b : True
a is b : False
id(a): 1766576710144
id(b): 1766576858816