다른 변수에 같은 값을 집어넣으면 오브젝트의 값은 같아야하자나요 근데 이게 이상해요
311
작성한 질문수 39
이때는 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
-5 ~ 256까지는 값의 배열이 유지가 되고 그래서 id를 비교를 하면 True로 출력이 된거였네요
그럼, 그 이상의 값은 배열이 유지가 안되어서 id를 비교해도 비교가 안되는거네요?
인스턴스 변수 문의
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
50
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





