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
'Python' 카테고리의 다른 글
| [Python] heapq 활용해 정렬 및 최소값 찾기 (0) | 2025.12.01 |
|---|---|
| [Python] 왈러스 연산자(:=) (0) | 2025.11.27 |
| [Python] uuid로 고유한 식별자(Unique ID) 만들기 (0) | 2025.11.25 |
| [Python] isinstance()로 변수 타입 확인하기 (0) | 2025.11.23 |
| [Python] abc 모듈과 @abstractmethod 로 추상클래스 만들기 (0) | 2025.11.20 |