a = [1, 2, 3]
print(id(a))
a[0] = 5 #a = [5, 2, 3]
print(id(a))
#출력 결과
#4393788808
#4393788808
a = [1, 2, 3]
b = a #얕은 복사
b[0] = 5
print(a) #[5, 2, 3]
print(b) #[5, 2, 3]
print(id(a)) #4396179528
print(id(b)) #4396179528
a = "abc"
b = a #얕은 복사
print(a) #abc
print(b) #abc
print(id(a)) #4387454680
print(id(b)) #4387454680
b = "abcd"
print(a) #abc
print(b) #abcd
print(id(a)) #4387454680
print(id(b)) #4396456400
슬라이싱, copy 모듈의 copy 메소드로 얕은 복사 하기
a = [1, 2, 3]
b = a[:]
print(id(a)) #4396179528
print(id(b)) #4393788808
print(a is b) #False
b[0] = 5
print(a) #[1, 2, 3]
print(b) #[5, 2, 3]
a = [[1, 2], [3, 4]]
b = a[:]
print(id(a)) #4395624328
print(id(b)) #4396179592
print(id(a[0])) #4396116040
print(id(a[0])) #4396116040
a[0].append(9)
print(a) #[[1, 2, 9], [3, 4]]
print(b) #[[1, 2, 9], [3, 4]]
내부 객체들까지 모두 새롭게 copy
copy 모듈의 deepcopy 메소드 사용
from copy import deepcopy
a = [[1, 2], [3, 4]]
b = deepcopy(a)
a[0].append(9)
print(a) #[[1, 2, 9], [3, 4]]
print(b) #[[1, 2], [3, 4]]