[Python] 객체 복사

객체 참조

객체 참조: 기존 객체의 메모리 주소를 참조하므로 새로운 객체 변경 시 기존 객체도 변경됨 (mutable 객체일 경우)

  • immutable 객체인 경우 객체 참조를 해도 새로운 메모리 주소를 참조하는 새로운 객체가 생성됨
새로운객체명 = 기존객체명

객체 복사

1) 얕은 복사: 복합 객체의 내부 객체를 참조

  • 얕은 복사를 하는 것은 복합 객체의 내부 객체를 참조하는 것이며 복사한 복합 객체의 내부 객체를 변경했을 때 기존의 복합 객체의 내부 객체도 변경됨

  • 복합 객체 (Compound Object): 다른 객체를 포함하는 객체 (리스트 객체, 클래스 객체 등)

  1. 리스트 얕은 복사
    새로운리스트객체명 = 기존리스트객체명[:]
    
  2. 객체 얕은 복사 (copy 모듈 사용)
    import copy as cp
    새로운객체명 = cp.copy(기존객체명)
    

2) 깊은 복사: 기존의 복합 객체로 새로운 복합 객체를 생성

  • 깊은 복사를 하는 것은 기존의 복합 객체로 새로운 복합 객체를 생성하는 것이며 복사한 복합 객체의 내부 객체를 변경해도 기존의 복합 객체의 내부 객체는 변경되지 않음
  1. 객체 깊은 복사 (copy 모듈 사용)
import copy as cp  
새로운객체명 = cp.deepcopy(기존객체명)

객체 메모리 주소값 확인

  • id() 함수와 hex() 함수를 통해 객체가 저장되어 있는 메모리 주소값을 16진수로 확인
hex(id(객체명))

참고자료: https://docs.python.org/3/library/copy.html

Categories:

Updated:

Comments