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

vpdtlrdl님의 프로필 이미지
vpdtlrdl

작성한 질문수

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

일급함수 - 클로저 심화(3-2)

복합 할당 연산자와 관련된 질문입니다

작성

·

198

0

nonlocal, global 등을 혼자 공부하다가 생긴 궁금증인데요, 복합 할당 연산자와 관련해서 헷갈리는 부분이 있습니다.

m = [152025# 리스트는 가변
print(mid(m)) # 1661575536576

m = m * 2
print(mid(m)) # 1661575275264

m *= 2
print(mid(m)) # 1661575275264

리스트의 연산에서

a = a * 1 같은 경우는 a를 재할당 하여 id 값이 변화하고,

a *= 1 같은 경우는 a객체를 수정하여 id 값에 변화가 없다고 공부하였습니다.

그런데 정수형의 연산에서는

b = 1
print(bid(b)) # 1 2699763476784

b = b + 1
print(bid(b)) # 2 2699763476816

b += 1
print(bid(b)) # 3 2699763476848

b = 3
print(bid(b)) # 3 2699763476848

그냥 각 객체마다 고유한 id를 부여하고, 같은 값을 가리키면 같은 id값을 갖게 되는 것을 볼 수 있었습니다.

immutable과 mutable 자료형에서 왜 이런 차이가 발생하는 것인가요??

답변 1

0

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

파이썬 내부적으로 __add__ , __iadd__ 메소드가 동작되는데 차이가 있습니다.

아래 읽어보세요~

https://teamtreehouse.com/community/what-is-the-purpose-of-the-iadd-magic-method-since-it-works-fine-without-it

vpdtlrdl님의 프로필 이미지
vpdtlrdl

작성한 질문수

질문하기