티스토리 뷰
📌 목차
✅ is 연산자와 ==의 차이 관한 코드를 보자
- is 연산자는 객체의 주소값을 비교하고 (= 객체가 같은지 비교)
- ==연산자는 값을 비교한다. 둘다 비교 후 같으면 True , 다르면 False 이렇게 된다.
a = 101
b = 100+1
print("a = ",a) #a = 101
print("b = ",b) #b = 101
print(a==b) #True
print(a is b) #True
c = ['a']
d = ['a']
print("c = ",c) #c = ['a']
print("d = ",d) #d = ['a']
print(c==d) #True
print(c is d) #False
a = 101
b = 100+1
a와 b는 둘다 101이라는 값을 갖게 된다.
그런데 여기서 의문이 생긴다!!!
아니!! a도 101 b도 101 그래서 값을 비교하는 '==' 는 True 인 것은 알았어! 그런데 왜? 메모리값(=주소값)을 비교하는 is연산자도 True야?!??
사실 파이썬에서 작은 정수들(-5~256까지의정수)는 성능 최적화를 위해 정수 객체를 미리 생성하고 재사용하는 방식 사용 그러다보니 같은 값을 갖는 변수들은 메모리상에서 같은 객체를 참조 하게 된다. 101이라는 값이 작기 때문에 같은 값을 갖게 되며, 같은 객체를 갖는다고 판단하는 것!
그러면
c = ['a']
d = ['a']
print(c==d) # True
print(c is d) # False
얘들도 값이 작으니까 False가 아니라 True 여야 하는거 아니야?
얘들은 정수가 아니고, 리스트 객체라서 메모리를 다르게 사용하게 됨. 그러다보니 값은 같아도 메모리 주소값이 달라짐
a = 'apple'
b = 'apple'
print(a==b) #True
print(a is b) #True
간단한 문자열도 True True 나오게 된다
'일상 > 파이썬' 카테고리의 다른 글
파이썬 swap temp XOR (0) | 2024.01.01 |
---|---|
리스트 고급 활용(리스트컴프리헨션,필터, 리스트 요소 합, 재귀함수) (0) | 2023.03.30 |
파이썬 리스트 사칙연산 (0) | 2023.03.29 |
파이썬에서 문자열 리스트 활용 예제 (1) | 2023.03.27 |
[파이썬]슬라이싱 (문법, 예제 (0) | 2023.03.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- GPTCHAT꿀팁
- 유제품알러지
- list for
- 리스트고급
- 파이썬
- 블로그분류
- 블로그신뢰성
- 파이썬리스트
- 리스트요소의합
- 리스트
- 현미빵
- 식이섬유가높은빵
- 돌아기치즈
- 치즈단계
- 티스토리하위카테고리설정
- 리스트가로출력
- 블로그전문성
- gptchat문제점
- Mediterranean diet
- 아티산빵
- range()
- 티스토리하위카테고리만들기
- 여자심장병
- GPTCHAT활용
- 아기치즈선택
- 파이썬리스트기초
- 가열식가습기 #가열식가습기주의할점 #가열식가습기단점
- 가열식가습기추천 #2023가열식가습기
- GPTCHAT레시피
- 치즈알러지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함