얕은 복사와 깊은 복사 in Python
프로그래밍/소프트웨어 개발
개발 툴
대상자: Python을 사용하는 개발자, 특히 복사 메커니즘에 대해 이해하고자 하는 초보자 및 중급자
핵심 요약
=
연산자는 얕은 복사로, 객체를 참조하는 변수를 생성한다.
copy()
또는 set()
은 얕은 복사를 수행하며, 내부 요소는 동일한 객체를 참조한다.
deepcopy()
는 깊은 복사를 수행하며, 모든 내부 객체를 복제하여 원본과 완전히 독립적인 새로운 객체를 생성한다.
섹션별 세부 요약
1. 변수 할당과 얕은 복사
=
연산자는 두 변수가 동일한 객체를 참조하도록 만든다.
A is B
를 사용하여 두 변수가 동일한 객체를 참조하는지 확인할 수 있다.
pop()
을 통해 요소를 제거하면, 원본과 복사본 모두 영향을 받는다.
2. `copy()`와 `set()`을 통한 얕은 복사
copy()
메서드와 set()
함수는 얕은 복사를 수행한다.
- 복사된 객체는 원본과 다른 객체를 참조하지만, 내부 요소는 동일한 객체를 참조한다.
v1 is v2
로 복사된 요소가 동일한 객체를 참조하는지 확인할 수 있다.
3. `deepcopy()`를 통한 깊은 복사
deepcopy()
는 내부 객체까지 완전히 복사하여 원본과 독립적인 객체를 생성한다.
A is B
는 False
가 되며, v1 is v2
도 False
가 된다.
- 깊은 복사는 데이터가 복잡할 때 안전한 복사 방법이다.
4. 3D 집합과 2D 반복자 예제
deepcopy()
는 중첩된 구조까지 깊이 복사한다.
A.pop()
과 B.pop()
은 서로 다른 객체를 참조한다.
next()
를 통해 반복자 요소를 접근할 수 있으며, 복사된 객체는 동일한 값이 출력된다.
결론
- 양쪽 복사 방법의 차이를 이해하고, 데이터 구조에 따라 적절한 복사 방법을 선택해야 한다.
- 깊은 복사는 복잡한 데이터 구조를 안전하게 복제할 때 필수적이다.
deepcopy()
는 copy
모듈에서 제공하며, from copy import deepcopy
로 사용할 수 있다.
shallow copy
deep copy
Python
copy
deepcopy
dictionary
set