선릉역 1번 출구

얕은 복사와 깊은 복사 본문

Language/Python

얕은 복사와 깊은 복사

choideu 2021. 10. 22. 18:48

mutable과 immutable은 쉽게 말하면 mutable은 변경이 가능하고 immutable은 변경이 불가능하다.

즉 상태를 변경할 수 있냐/없냐의 차이다.

 

*mutable

list, set, dict

값을 바꿔도 id 값은 변하지 않음

 

*immutable

bool, tuple, str, int, float

name: str에 choideu라는 문자열 할당 후 변경 시도

값을 바꾸면 id가 변경됨

choideu -> Choideu

변수 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