깊은 복사와 얕은 복사의 차이는 같은 주소 값을 바라보느냐 아니냐의 차이이다.
깊은 복사의 경우 같은 주소 값을 바라보게 되므로 한쪽에서 변경한 값이 다른쪽에서도 영향을 주게 되고,
얕은 복사의 경우 다른 주소를 바라보되, 값만 복사하여 둘 중 하나를 수정해도 복사한 개체와 본 개체간 영향을 주지 않게 된다.
얕은 복사를 하고 싶다면, = 연산자를 사용,
깊은 복사를 하고 싶다면, copy.deepcopy()를 사용하면 된다.
얕은 복사
myList1 = [10,20,30,40]
myList2 = myList1 # shallow copy
myList2[0] = 100
print( myList1) #[100, 20, 30, 40] 출력
print( myList2) #[100, 20, 30, 40] 출력
print( myList1 is myList2) #true
print( id(myList1)) #id는 다름
print( id(myList2)) #id는 다름
깊은 복사
myList1 = [10,20,30,40]
myList3 = copy.deepcopy(myList1) #깊은 복사
myList3.append(1)
print(myList1) #[10, 20, 30, 40] 출력
print(myList3) #[10, 20, 30, 40, 1] 출력
print(myList1 is myList3) #False
print(id(myList1)) #다른id
print(id(myList3)) #다른id
'개발 > Python' 카테고리의 다른 글
[파이썬] 파일 디렉터리 다루기 - os 모듈(import os) (0) | 2020.07.22 |
---|---|
[파이썬] 파일 입출력 (0) | 2020.07.21 |
[파이썬] 연산자, 연산자 우선순위 (0) | 2020.07.19 |
[파이썬] 데이터타입 - 시퀀스 자료형 (0) | 2020.07.18 |
[파이썬] 데이터타입 - 문자열 자료형 (0) | 2020.07.15 |