a = [1, 2]
b = a
b[0] += 1
print(a)
# [2, 2]
print(b)
# [2, 2]
a라는 변수를 b에 복사하고
b를 수정하면
a와 b에는 같은 값이 저장되어 있음을 알 수 있다.
'='을 사용해서 얕은 복사를 했기 때문이다.
얕은 복사를 하면 메모리 주소만 복사되어
결국 같은 값을 가지게 되는 것이다.
이는 immutable한 객체에는 해당되지 않고,
mutable한 객체에만 해당된다.
a = [1, 2]
a1 = a
a2 = a[:]
a3 = a.copy()
[:]
과 .copy()
는 =
과 다르게
한 단계 더 깊게 복사하지만
완전한 깊은 복사는 아니다.
깊은 복사를 하면 리스트와 내부 리스트까지 메모리 주소 값이 다르게 복사된다.
import copy
a = [1, 2]
b = copy.deepcopy(a)