파이썬은 객체지향언어이다.
그렇기 때문에 발생하는 특성이 바로 오늘 배운 내용이다.
그렇기 때문에 발생하는 특성이 바로 오늘 배운 내용이다.
목차(클릭 시 이동됩니다.)
파이썬이 정보를 처리하는 방법
(좌)Mutable vs (우)Immutable 구분 |
위 표를 기억하며 다음 그림을 이해해보자.
![]() |
Int형(immutable) |
id 함수를 통해 객체가 메모리의 어디에 저장되어 있는지 파악해보면,
첫번째 실행줄에서 identifier a와 b는 같은 object, 10을 가리킨다.
하지만 a에서 10을 더했더니 a와 b는 서로 다른 object를 가리키게 되었다.
그 이유는 int가 immutable하기 때문이다.
파이썬에서 a에 10을 더할 때 기존에 있던 10이라는 object 자체에서 10을 더하는 것이 아니라, 새로운 object를 만들고 a가 그걸 가리키게 만든다.
파이썬에서 a에 10을 더할 때 기존에 있던 10이라는 object 자체에서 10을 더하는 것이 아니라, 새로운 object를 만들고 a가 그걸 가리키게 만든다.
마찬가지로 첫번째 실행줄에서 a와 b는 같은 object, [1,2,3]이라는 list를 가리킨다.
그리고 b에 append를 하는 변형을 가했더니 a도 변했다.
이건 바로, mutable하기 때문에 발생한 현상이다.
list가 mutable하므로 b가 가리키던 object 자체가 변할 수 있었다. (실제로 id값이 동일하다)
그런데 여기서 a도 같은 object를 가리키고 있었으므로 a의 값도 변한 것이다!
이렇게 mutable과 immutable의 차이를 알아보았다.
처음 문법을 배울 때는 이해되지 않는 내용이었는데, 이렇게 배경을 이해하니 와닿는 것 같다. 앞으로 또 어떤 컴퓨터 공학적 배경이 프로그래밍에 숨겨져 있을지 기대된다.
추천글 : 수포자, 수학이 막연한 분들을 위한 수학 완벽정리(feat. 수학 잘하는 법)
[자료구조] 왜 자료구조를 배우는가?