728x90
반응형
알고리즘 공부를 하다가 수정 불가능한 타입과 수정이 가능한 타입인 객체에 대해서
정리하고 넘어가고싶어 졌다.
일단 파이썬에서 객체는 수정가능한 타입과 수정 불가능한 타입으로 나뉜다.
수정이 불가능 한게 immutable 이고
수정이 가능한데 mutable 이다.
immutable 객체에는 int float str tupe 타입이 있고
mutable 객체에는 list dict 타입이 있다.
예를들어 immutable 객체인 str 를 살펴보자.
a 라는 변수에 '안녕' 이라는 문자열을 넣고
a라는 변수에 '잘가' 라는 문자열을 차례로 넣어보자
그러면 '안녕' 이라는 문자열 객체에 메모리 (예를들어) 1번지에 할당되고
이 문자열 객체를 a 라는 변수가 바인딩 한다
다음에는 '잘가'라는 문자열 객체가 메모리의 (예를들어) 2번지에 할당되고
이 문자열 객체를 a라는 변수가 바인딩 한다
'안녕'이라는 문자열 객체는 아무도 자기를 참조하지 않아서 자동으로 메모리에서 소멸된다.
이렇게 새로운 문자열 객체가 생성되고 기존 객체는 그대로 있게 된다.
a가 2번지에 바인딩 되면 '안녕'은 사라진다.
이번에는 mutable 객체인 리스트를 예시로 들어보겠다.
리스트는 인덱스 0번, 1번, 2번이 리스트의 원소로 다시 바인딩 하는 구조를 갖는다.
그래서 리스트에 원소를 삭제하든 추가하든
리스트 객체의 시작 주소는 변하는게 아니다.
ref:https://wikidocs.net/91520#immutable-mutable
728x90
반응형