Assignment (할당)
= 를 사용해 할당한다
두 변수는 메모리 상에서 동일한 객체를 가리킨다
값을 변경하면 변경된 값을 두 변수가 가리키는 것이므로 모두 같은 내용이 나온다
a = [1, 2, [3, 4]]
b = a
a.append(5)
a[2].append(6)
print(a) # [1, 2, [3, 4, 6], 5]
print(b) # [1, 2, [3, 4, 6], 5]
Shallow Copy (얕은 복사)
[:] 또는 copy.copy() 를 사용한다 ( copy.copy() 는 copy 모듈을 사용 )
최상위 컨테이너는 새 객체로 생성하지만(복사) 내부 객체는 참조한다
단순 리스트 추가는 독립적이지만 내부 중첩 리스트를 수정하면 함께 변경된다
import copy
a = [1, 2, [3, 4]]
b = a[:] # 또는 copy.copy(a)
a.append(5)
a[2].append(6)
print(a) # [1, 2, [3, 4, 6], 5]
print(b) # [1, 2, [3, 4, 6]]
Deep Copy (깊은 복사)
copy.deepcopy() 를 사용한다
내부에 포함된 모든 객체까지 재귀적으로 새 객체를 생성한다(복사)
원본과 복사본은 완전히 독립된 메모리 공간을 가져 서로 영향을 주지 않는다
import copy
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
a.append(5)
a[2].append(6)
print(a) # [1, 2, [3, 4, 6], 5]
print(b) # [1, 2, [3, 4]]
정리
| 항목 | 할당 (Assignment) | 얕은 복사 (Shallow Copy) | 깊은 복사 (Deep Copy) |
| 방법 | b = a | a[:], copy.copy() |
copy.deepcopy() |
| 특징 | 동일 객체 참조 | 최상위만 새 객체 | 모든 층위 새 객체 |
| 내부 객체 영향 | 원본 변경 시 함께 변경됨 | 중첩 객체 변경 시 함께 변경됨 | 완전 독립되어 영향 없음 |
'Language > Python' 카테고리의 다른 글
| Python ) 디버깅 하는 법 (0) | 2026.01.11 |
|---|---|
| Python ) Scope 에 대해 (feat. global, nonlocal 키워드) (0) | 2026.01.10 |
| 260108 TIL (0) | 2026.01.08 |
| Python) 문자열 뒤집기 (feat. reverse, reversed ) (0) | 2026.01.08 |
| 260107 TIL : List, For Loop and Function (0) | 2026.01.07 |