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

주니어부기님의 프로필 이미지
주니어부기

작성한 질문수

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

리스트를 가지고 연산했을 때 id 값에 대해 궁금한 것이 있습니다.

작성

·

148

0

튜플은 불변형이기에

리스트와 달리 재할당할 때마다 id 값이 바뀐다는 것은 이해했습니다.

그런데

a = [1,2,3]

print(id(a))

a *= 2

print(a, id(a))

a = a * 2

print(a, id(a))

했을 때 첫 번째 a의 id와 두 번째 a의 id 값은 같은데

세 번째 a의 id 값만 다릅니다.

[1,2,3]인 a의 id와 a *= 2 한 a의 id는 동일하고

a = a*2 했을 때의 id만 다르다는 의미인데

왜 그런가요? a = a* 2나 a *= 2나 둘 다 재할당하는 것인데

id값이 다른 이유를 모르겠네요. 감사합니다.

답변 1

1

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요.

a = a + 2 , a *= 2

전자의 경우에는 a라는 변수를 재선언해서 할당하는 것이기 때문에 id값이 변경되서 출력됩니다.

후자는 현재 변수에 할당이므로 동일한 id값이 출력됩니다.

감사합니다.

주니어부기님의 프로필 이미지
주니어부기

작성한 질문수

질문하기