작성
·
269
0
이때는 id 값이 같다고 뜨는데
이때는 다르다고 뜨네요 그 이유가 뭘까요?
변수에 좀 더 큰 값을 넣어서도 해봤는데 그때도 다르다고 떳는데 클 수록 id값을 달라지는 느낌이네요
답변 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
-5 ~ 256까지는 값의 배열이 유지가 되고 그래서 id를 비교를 하면 True로 출력이 된거였네요
그럼, 그 이상의 값은 배열이 유지가 안되어서 id를 비교해도 비교가 안되는거네요?
0