선릉역 1번 출구
얕은 복사와 깊은 복사 본문
mutable과 immutable은 쉽게 말하면 mutable은 변경이 가능하고 immutable은 변경이 불가능하다.
즉 상태를 변경할 수 있냐/없냐의 차이다.
*mutable
list, set, dict
값을 바꿔도 id 값은 변하지 않음
*immutable
bool, tuple, str, int, float
값을 바꾸면 id가 변경됨
변수 name에 할당된 id 값이 바뀜
mutable한 객체의 변수 간 대입
b에 a를 할당하면 같은 메모리 주소를 바라보게 돼서 b에 변경이 생기면 a도 바뀜
(a is b가 True 유지)
immutable한 객체의 변수 간 대입
b를 a에 할당하면 같은 메모리 주소를 바라보지만, b에 변경이 생기면 재할당이 이루어져 메모리 주소가 변경됨
(a is b가 False가 됨)
얕은 복사(shallow copy) 그리고 깊은 복사(deep copy)
얕은 복사는 값을 할당하면 새로운 id가 부여되지만 mutable객체 안에 mutable 객체가 존재하면 내부 객체는 같은 주소를 바라보게됨
리스트 반복도 얕은 복사 문제가 발생함
리스트 반복 시에도 얕은 복사됨을 인지하자!
깊은 복사는 내부의 객체들까지 모두 새롭게 copy되는 것으로 다 다른 메모리를 참조한다.
'Language > Python' 카테고리의 다른 글
배경화면 변경 프로그램 만들기 (0) | 2023.03.14 |
---|---|
람다 함수 (0) | 2022.09.07 |
Comments