• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

21.09.07 00:59 작성 조회수 149

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