PRACTICE MATERIAL
python · 코드와 실행 결과 24
「null」 문맥에 삽입된 원본 코드와 실행 결과이다. Python 객체·자료형과 복사 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
CONCEPT → PRACTICE → VERIFICATION
얕은 복사의 바깥 목록과 안쪽 목록을 따로 변경하기
객체 복사 뒤 어떤 참조가 분리되고 어떤 참조가 남는지 실제 변경 결과로 추적한다.
- 바깥 목록의 항목 교체를 확인한다a.copy()는 새 바깥 리스트를 만들고 원소에 대한 참조를 복사한다. a[0]을 100으로 바꾸는 연산은 a의 첫 번째 칸이 가리키는 객체를 교체한다.
- 공유된 안쪽 객체의 변경을 추적한다a[2][0]을 바꾸면 먼저 a[2]가 가리키는 내부 리스트를 찾고 그 객체의 첫 칸을 변경한다. b[2]도 같은 내부 리스트를 참조하므로 b로 읽어도 변경이 보인다.
- deepcopy는 내부 객체도 대조해서 검증한다두 번째 사진에서는 copy.copy와 deepcopy로 만든 바깥 객체의 id가 다르게 나온다. 바깥 id 세 개만으로 내부 객체가 분리되었다는 사실까지 직접 확인할 수는 없다.
