print(id(m) == id(n)) --> False
58
작성한 질문수 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 버전에서의 차이도 있었으니, 참고 부탁드려요.
감사합니다.
인스턴스 변수 문의
0
37
1
챕터 03_04 (튜플) 교육자료
0
35
2
Package(3-1) Sub 폴더 자료
0
36
1
아톰 출력 안됨
0
67
2
강의자료 메일 발송 요청 드립니다.
0
77
1
강의자료 메일로 보내주실 수 있으실까요?
1
53
0
Iterable 요소는 리스트로 작성해야하는 것 맞나요?
1
77
2
강의자료 부탁드립니다
0
63
2
if Flase: print('Bad')
0
61
1
=와 == 의 차이
0
78
1
functions 함수 섭들을려고하는데요
0
69
1
강의자료 부타드리겠습니다!
0
58
0
VSCODE에 VIEW에서 SELECTED INTERPRETER조회가 안됩니다.
0
66
1
강의자료 부탁드립니다.
0
53
0
dict의 Key를 바꾸는 방법
0
67
1
강의자료부탁드립니다
0
61
1
run withount 디버깅 및 F5+ctrl이 안먹혀요
0
63
1
강의 자료와 예정 다운로드
0
76
2
객체지향 vs 함수형
0
63
1
어렵네요 설정도
0
86
1
설정이 잘 된건지
0
52
1
맥 os vscode 설정 - python interpreter select
0
105
1
강의자료 부탁드립니다. mytoughgirl@naver.com 입니다.
0
46
1
vscode로 수업 진행한 영상은 없는건가요?
0
57
2





