Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- NoSQL
- 아티클 스터디
- ERD
- 개발공부
- JWT
- redis
- Wil
- 오블완
- 연습
- Doker
- nginx
- SQL
- flask
- 도커
- CS
- 파이썬
- 티스토리챌린지
- 자료구조
- viewsets
- 장고
- git
- Til
- django
- Python
- 세션(Session)
- 쿠키(cookie)
- docker
- github
- web
- 코딩테스트
Archives
- Today
- Total
SteadyDrills
[TIL]객체의 비교: 동일성(is)과 동등성(==) 본문
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는 새로운 객체를 가리킴
'PYTHON' 카테고리의 다른 글
[TIL] 시간 복잡도와 빅오 표기법(Big-O notation) (1) | 2024.07.24 |
---|---|
[TIL] 인스턴스 메서드의 접근 지정자 (Access Modifiers) - Public Methods,Protected Methods,Private Methods (2) | 2024.07.23 |
[TIL]파이썬 - 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) | 2024.07.19 |
[TIL] 재귀함수 & lambda함수 (2) | 2024.07.18 |
[TIL] 파이썬 LEGB 규칙 (0) | 2024.07.17 |