
깊은 복사와 얕은 복사에 대해 알아봅시다.
할당 : 객체 a에 대해 b=a라 하면 b는 a의 사본을 만들지 않고 참조 (단순 할당)
a.append()를 하면 b도 추가됨 (b는 a객체의 주소를 참조)
얕은 복사 : 새 복합 객체를 만들고 원본 객체 내에 있는 오브젝트에 대한 참조를 삽입
b = a[:]나 b=a.copy()라 하면 a를 복사한 객체를 생성하고 b가 참조함 (서로 참조하는 객체들의 주소가 같음)

깊은 복사 : 리스트나 클래스의 인스턴스와 같은 복합 객체에 대해서만 적용, 새 복합 객체를 만들고 원본 객체 내에 있는 객체에 대한 복사를 재귀적으로 삽입
copy 모듈의 deepcopy() 함수를 이용

😜 추가 지식
튜플은 변경 불가능한 객체이기에 할당은 되지만 복사는 안됨
import copy
a = [1, 2, [3, 4]]
b = copy.copy(a)
b[2].append(5)
print(b)
-> [1, 2, [3, 4, 5]]
print(a)
-> [1, 2, [3, 4, 5]]
처음 복사 상태

import copy
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
b[2].append(5)
print(b)
-> [1, 2, [3, 4, 5]]
print(a)
-> [1, 2, [3, 4]]
재귀의 내용까지 복사가 된 형태에서 수정 시해당 사이트의 내용과 참고 서적을 참고로 작성했습니다. 추후에 더 알게 되는 내용들을 추가하겠습니다.
01-3 할당, 얕은 복사와 깊은 복사 (널널한 교수의 고급 파이썬) ft. 파이썬 코딩
[Python] 할당과 복사 / 얕은 복사, 깊은 복사 (shallow copy, deep copy)