inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

다른 변수에 같은 값을 집어넣으면 오브젝트의 값은 같아야하자나요 근데 이게 이상해요

315

조은택

작성한 질문수 39

0

이때는 id 값이 같다고 뜨는데 이때는 다르다고 뜨네요 그 이유가 뭘까요?

변수에 좀 더 큰 값을 넣어서도 해봤는데 그때도 다르다고 떳는데 클 수록 id값을 달라지는 느낌이네요

python

답변 4

1

좋은사람

와 정말 어려운 부분에 대해서 궁금하셨군요.

이건 CPYTHON 영역까지 생각해 봐야 하는 부분입니다.

안보이면 드래그 해서 보세요!

>>> a = 256
>>> b = 256
>>> id(a)
9987148
>>> id(b)
9987148
>>> a = 257
>>> b = 257
>>> id(a)
11662816
>>> id(b)
11662828

위에 예제도 똑같습니다.

공식 설명은 아래와 같고 결론은

The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of 1. I suspect the behaviour of Python in this case is undefined. :-)


-5 ~ 256 값의 배열을 유지합니다 이때는 같은 ID 값
해당 범위에서 새로운 값을 변경하면 이때는 새로운 참조 값이 할당됩니다.
그래서 ID 값이 변경됩니다.
즉, 파이썬 내부에서 자동으로 재 할당이 이루어 집니다.

공식 레퍼런스 입니다.
지금 입문과정에서 완벽하게 이해하는 것은 힘들 수 있어요.
파이썬2 공식 버전부터 읽어봐야 하는 내용이라서요.

https://docs.python.org/2/c-api/int.html

0

좋은사람

맞습니다. 재 할당 됩니다.

0

PARK JUNYEONG

-5 ~ 256까지는 값의 배열이 유지가 되고 그래서 id를 비교를 하면 True로 출력이 된거였네요

그럼, 그 이상의 값은 배열이 유지가 안되어서 id를 비교해도 비교가 안되는거네요?

0

PARK JUNYEONG

저도 이 부분이 궁금하네요!

Python: Select Interpreter 오류

0

41

1

54강 4분 41초에서 질문 있어요.

0

57

1

import

0

37

1

45강 예제4번에서 질문 있어요!

0

55

1

45강 강의 10분 03초 내용에서 x + 1 을 하는 이유는 뭔가요?

0

49

1

3강, 7강 화면이 안나옵니다. 그냥 검은화면으로만 노출되요;;

0

53

1

41강 1분 39초 영상에서 import test_module이 조회 안 돼요.

0

56

1

29강 while(3-1) 5분 20초 강의 영상 질문

0

52

0

pcskjs@naver.com

0

60

1

인터프리터 설정이 안됩니다.

1

76

1

Python formatter 설치

0

46

1

자료 다운로드 위치 확인 부탁드립니다.

0

50

2

보라색 예약어

0

50

1

#을 붙이는 이유

0

46

1

실행이 안 되는데요.

0

60

1

print 문법 실행 안 돼요.

0

55

1

영문 계정

0

48

1

맥북에서 아이패드로 연결해서 보려고 하면 화면이 안뜹니다.

0

43

1

인스턴스 변수 문의

0

83

1

챕터 03_04 (튜플) 교육자료

0

88

2

Package(3-1) Sub 폴더 자료

0

70

1

아톰 출력 안됨

0

118

2

강의자료 메일 발송 요청 드립니다.

0

123

1

강의자료 메일로 보내주실 수 있으실까요?

1

79

0