-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
복합 할당 연산자와 관련된 질문입니다
21.09.07 00:59 작성 조회수 149
0
nonlocal, global 등을 혼자 공부하다가 생긴 궁금증인데요, 복합 할당 연산자와 관련해서 헷갈리는 부분이 있습니다.
m = [15, 20, 25] # 리스트는 가변
print(m, id(m)) # 1661575536576
m = m * 2
print(m, id(m)) # 1661575275264
m *= 2
print(m, id(m)) # 1661575275264
리스트의 연산에서
a = a * 1 같은 경우는 a를 재할당 하여 id 값이 변화하고,
a *= 1 같은 경우는 a객체를 수정하여 id 값에 변화가 없다고 공부하였습니다.
그런데 정수형의 연산에서는
b = 1
print(b, id(b)) # 1 2699763476784
b = b + 1
print(b, id(b)) # 2 2699763476816
b += 1
print(b, id(b)) # 3 2699763476848
b = 3
print(b, id(b)) # 3 2699763476848
그냥 각 객체마다 고유한 id를 부여하고, 같은 값을 가리키면 같은 id값을 갖게 되는 것을 볼 수 있었습니다.
immutable과 mutable 자료형에서 왜 이런 차이가 발생하는 것인가요??
답변을 작성해보세요.
0
좋은사람
지식공유자2021.09.07
파이썬 내부적으로 __add__ , __iadd__ 메소드가 동작되는데 차이가 있습니다.
아래 읽어보세요~
https://teamtreehouse.com/community/what-is-the-purpose-of-the-iadd-magic-method-since-it-works-fine-without-it
답변 1