IT/Python

얕은 복사와 깊은 복사

우루사이 2023. 10. 30. 19:09

얕은 복사

  • 간접적으로 변수의 주소를 복사하는 것.
  • 다른 객체의 참조가 포함되어 있으면 참조만 복사.
  • 원본 변경시, 복사 내용도 변경.
  • 얕은 복사 예시
    • 객체의 타입 변환 
    • 뮤터블 객체의 슬라이싱
    • 이뮤터블 객체의 슬라이싱
    • 이뮤터블 객체의 deepcopy()는 참조만 공유하기 때문에 얕은 복사
a = [1, 4, 2]
b = a
a[0] = 25
a # [25, 4, 2]
b # [25, 4, 2]
id(a), id(b) # 3512352, 3512352

# 함수
copy.copy(a)

 

깊은 복사

  • 원본을 복사해 복사본을 따로 생성.
  • 참조하고 있는 객체까지 모두 복사.
  • 원본을 변경시, 복사본은 유지.
a = [3, 2, 1]
b = a[:]
# id(a) != id(b)
a[0] = 52
# a[0] != b[0]

# 함수
copy.deepcopy(a)