inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

파이썬 변수(2-2)

print(id(m) == id(n)) --> False

62

Zetta Kim

작성한 질문수 7

0

저는 False 가 나옵니다.

찾아보니 False가 정상이고 True는 캐싱으로 설명이 나옵니다.

 (256보다 큰 숫자이므로 작은 정수 캐싱 범위에 해당하지 않음)

강사님 설명 부탁합니다.

 

m = 800
n = 800

print(id(m))
print(id(n))
print(id(m) == id(n))

python

답변 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