인프런 커뮤니티 질문&답변

응군님의 프로필 이미지
응군

작성한 질문수

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

파이썬 변수(2-2)

아톰 vs 파이썬 인터프리터

작성

·

195

0

실습예제로 동일한 변수의 id 값이 아톰으로하면 동일한데 파이썬 인터프리터로 하면 값이 틀립니다.

(예)

b = 300

c = 300

print(id(b) == id(c))

아톰 : True

파이썬 인터프리터 : False

값이 틀린 이유가 있을까요?

파이썬 인터프리터의 경우 대화형으로 하나씩 수행하다보니 값이 틀려지는걸까요?

답변 4

2

TA님께서 답변을 잘못 주신 것 같고

https://www.quora.com/Why-is-the-following-return-false-in-Python-A-53462-b-53462-id-a-id-b

여기 읽어보시면 해답을 얻으실 수 있을 것 같습니다.

저도 궁금하고 답변을 봐도 이해가 안가서 한참 해맸습니다.

1

파이썬 TA님의 프로필 이미지
파이썬 TA
지식공유자

안녕하세요.

인프런 강좌 TA 박유진입니다.

b와 c는 300이라는 변수에 들어있는 값은 같지만, 변수 자체의 id는 다른 값을 가지게 됩니다.

따라서 False 결과값이 옳은 결과입니다.

또 궁금한 점이 있으면 질문주세요 :)

감사합니다.

0

파이썬 인터프리터의 경우 대화형으로 하나씩 수행하다보니 값이 틀려지는걸까요?  

- 네, 저도 이렇게 생각합니다.

0

hp님께서 남겨주신 링크를 대충 본 결과,
핵심이라고 생각되는 부분을 이해하면,

b 와 c가 같은 값(300)을 할당 받았지만,
그것이 저장되는 메모리의 위치가 각각 달라서
(그 메모리 위치값이 파이썬에서는 id인가봅니다.)
그 위치값이 숫자로 표현되나본데,
그게 다른 겁니다.

쉽게 설명하면,
똑같은 아이폰12 pro 스페이스그레이를 샀지만,
시리얼 번호가 다르잖아요 두 폰이.

그래서, 값은 모델이지만, 같은 폰은 아니라는 것이죠.

또 다른 예로
두 사람이 같은 은행에 300만원씩 각자의 계좌에 저금을 했습니다. 그 300만원이라는 액수는 같지만, 한사람의 300만원가 다른사람의 300만원이 같은 통장(계좌)에 있는게 아니라는 뜻으로 해석하면 될것 같습니다.

hp님 감사합니다.

근데, 왜 atom과 파이썬 인터프리터의 값이 다른지는 모르겠네요. 아시는분 그부분에 대해서 설명을 해주면 좋겠어요.

응군님의 프로필 이미지
응군

작성한 질문수

질문하기