print(id(m) == id(n)) --> False
61
작성한 질문수 7
저는 False 가 나옵니다.
찾아보니 False가 정상이고 True는 캐싱으로 설명이 나옵니다.
(256보다 큰 숫자이므로 작은 정수 캐싱 범위에 해당하지 않음)
강사님 설명 부탁합니다.
m = 800
n = 800
print(id(m))
print(id(n))
print(id(m) == id(n))
답변 1
1
안녕하세요. 좋은 질문 주셨습니다.
파이썬 버전에 따라 상이하고 이해하고 계신대로 작은 숫자는 캐싱으로 동일하게 나오게 됩니다.
초기 버전(또는 대화형 REPL 환경)에서는 컴파일러가 같은 상수로 인식하는 경우가 있었습니다.
>>> a = 800
>>> b = 800
>>> a is b
True # 일부 버전이나 REPL에선 이렇게 나옴
m = 100 ✅ (같은 객체)
m = 800 ❌ (새 객체)
요약을 하면
파이썬은 -5~256까지의 정수를 미리 캐싱
이 범위 내 숫자는 같은 객체를 가리키지만,
그 밖의 숫자는 새로 생성되어 id가 다릅니다.
Python 2.x / 초창기 3.x 버전에서의 차이도 있었으니, 참고 부탁드려요.
감사합니다.
Python formatter 설치
0
24
1
자료 다운로드 위치 확인 부탁드립니다.
0
21
2
보라색 예약어
0
22
1
#을 붙이는 이유
0
21
1
실행이 안 되는데요.
0
20
1
print 문법 실행 안 돼요.
0
22
1
영문 계정
0
21
1
맥북에서 아이패드로 연결해서 보려고 하면 화면이 안뜹니다.
0
13
1
인스턴스 변수 문의
0
59
1
챕터 03_04 (튜플) 교육자료
0
62
2
Package(3-1) Sub 폴더 자료
0
50
1
아톰 출력 안됨
0
87
2
강의자료 메일 발송 요청 드립니다.
0
98
1
강의자료 메일로 보내주실 수 있으실까요?
1
61
0
Iterable 요소는 리스트로 작성해야하는 것 맞나요?
1
83
2
강의자료 부탁드립니다
0
79
2
if Flase: print('Bad')
0
76
1
=와 == 의 차이
0
97
1
functions 함수 섭들을려고하는데요
0
75
1
강의자료 부타드리겠습니다!
0
64
0
VSCODE에 VIEW에서 SELECTED INTERPRETER조회가 안됩니다.
0
72
1
강의자료 부탁드립니다.
0
60
0
dict의 Key를 바꾸는 방법
0
83
1
강의자료부탁드립니다
0
73
1





