두 객체의 비교와 복사
- v1 == v2, 변수 v1과 v2가 참조하는 객체의 내용이 같은가?
- v1 is v2, 변수 v1과 v2가 참조하는 객체는 동일 객체인가?


객체 복사
얕은 복사
r1 = ['John', ('man', 'USA'), [175, 23]]
r2 = list(r1)
print(r1 is r2)
print(r1[0] is r2[0])
print(r1[1] is r2[1])
print(r1[2] is r2[2])

- r2는 r1가 참조하고 있는 값만 복사할 뿐 실제 객체를 복사한건 아니다(얕은 복사)


깊은 복사
J2021 = ['John', ('man', 'USA'), [175, 23]]
J2022 = list(J2021)
J2022[2][1] +=1
print(J2021)
print(J2022)

J2021 = ['John', ('man', 'USA'), [175, 23]]
import copy
J2022 = copy.deepcopy(J2021)
J2022[2][1] +=1
print(J2021)
print(J2022)
print((J2021[0] is J2022[0]) and (J2021[1] is J2022[1]))
print(J2021[2] is J2022[2])

파이썬은 deepcopy 함수 호출하면 immutable 객체는 얕은 복사, mutable 객체는 깊은 복사가 진행된다.
'books > 윤성우-중급-파이썬' 카테고리의 다른 글
수정 가능한 객체와 수정 불가능한 객체 (0) | 2025.03.12 |
---|---|
레퍼런스 카운트와 가비지 컬렉션 (0) | 2025.03.12 |