[Python] 객체 복사
객체 참조
객체 참조: 기존 객체의 메모리 주소를 참조하므로 새로운 객체 변경 시 기존 객체도 변경됨 (mutable 객체일 경우)
- immutable 객체인 경우 객체 참조를 해도 새로운 메모리 주소를 참조하는 새로운 객체가 생성됨
새로운객체명 = 기존객체명
객체 복사
1) 얕은 복사: 복합 객체의 내부 객체를 참조
-
얕은 복사를 하는 것은 복합 객체의 내부 객체를 참조하는 것이며 복사한 복합 객체의 내부 객체를 변경했을 때 기존의 복합 객체의 내부 객체도 변경됨
-
복합 객체 (Compound Object): 다른 객체를 포함하는 객체 (리스트 객체, 클래스 객체 등)
- 리스트 얕은 복사
새로운리스트객체명 = 기존리스트객체명[:]
- 객체 얕은 복사 (copy 모듈 사용)
import copy as cp 새로운객체명 = cp.copy(기존객체명)
2) 깊은 복사: 기존의 복합 객체로 새로운 복합 객체를 생성
- 깊은 복사를 하는 것은 기존의 복합 객체로 새로운 복합 객체를 생성하는 것이며 복사한 복합 객체의 내부 객체를 변경해도 기존의 복합 객체의 내부 객체는 변경되지 않음
- 객체 깊은 복사 (copy 모듈 사용)
import copy as cp
새로운객체명 = cp.deepcopy(기존객체명)
객체 메모리 주소값 확인
- id() 함수와 hex() 함수를 통해 객체가 저장되어 있는 메모리 주소값을 16진수로 확인
hex(id(객체명))
Comments