print(id(m) == id(n)) --> False
62
작성한 질문수 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: Select Interpreter 오류
0
32
1
54강 4분 41초에서 질문 있어요.
0
51
1
import
0
35
1
45강 예제4번에서 질문 있어요!
0
47
1
45강 강의 10분 03초 내용에서 x + 1 을 하는 이유는 뭔가요?
0
41
1
3강, 7강 화면이 안나옵니다. 그냥 검은화면으로만 노출되요;;
0
42
1
41강 1분 39초 영상에서 import test_module이 조회 안 돼요.
0
47
1
29강 while(3-1) 5분 20초 강의 영상 질문
0
44
0
pcskjs@naver.com
0
53
1
인터프리터 설정이 안됩니다.
1
67
1
Python formatter 설치
0
38
1
자료 다운로드 위치 확인 부탁드립니다.
0
44
2
보라색 예약어
0
42
1
#을 붙이는 이유
0
41
1
실행이 안 되는데요.
0
50
1
print 문법 실행 안 돼요.
0
45
1
영문 계정
0
41
1
맥북에서 아이패드로 연결해서 보려고 하면 화면이 안뜹니다.
0
34
1
인스턴스 변수 문의
0
76
1
챕터 03_04 (튜플) 교육자료
0
84
2
Package(3-1) Sub 폴더 자료
0
66
1
아톰 출력 안됨
0
110
2
강의자료 메일 발송 요청 드립니다.
0
117
1
강의자료 메일로 보내주실 수 있으실까요?
1
76
0





