inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

311

조은택

작성한 질문수 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

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

인스턴스 변수 문의

0

28

1

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

0

28

2

Package(3-1) Sub 폴더 자료

0

35

1

아톰 출력 안됨

0

60

2

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

0

70

1

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

1

48

0

Iterable 요소는 리스트로 작성해야하는 것 맞나요?

1

73

2

강의자료 부탁드립니다

0

56

2

if Flase: print('Bad')

0

57

1

=와 == 의 차이

0

74

1

functions 함수 섭들을려고하는데요

0

64

1

강의자료 부타드리겠습니다!

0

56

0

VSCODE에 VIEW에서 SELECTED INTERPRETER조회가 안됩니다.

0

65

1

강의자료 부탁드립니다.

0

49

0

dict의 Key를 바꾸는 방법

0

61

1

강의자료부탁드립니다

0

58

1

run withount 디버깅 및 F5+ctrl이 안먹혀요

0

58

1

강의 자료와 예정 다운로드

0

71

2

객체지향 vs 함수형

0

56

1

어렵네요 설정도

0

67

1

설정이 잘 된건지

0

49

1

맥 os vscode 설정 - python interpreter select

0

98

1

강의자료 부탁드립니다. mytoughgirl@naver.com 입니다.

0

42

1

vscode로 수업 진행한 영상은 없는건가요?

0

55

2