Assignment (할당)
a = ['red', 'blue', 'green']
b = a
b.append('black') --> Assignment 하고 값 변경 시 원본(a)과 새 변수(b) 모두 변경됨
- 개념 : 동일한 Adress(주소값)을 다른 변수에 적용하는 것
- a와 b가 동일한 주소값 가짐 (= b는 a가 참조하는 동일한 객체를 참조)
- 주소값을 Copy (동일한 주소 포인팅, 메모리 내 같은 객체)
Shallow Copy (얕은 복사)
a = [[1, 2], [2, 4]]
b = a[:] # list(a) # copy.copy(a)
b.append([3, 6]) --> 새로운 변수(b)에 대해서만 [[1, 2], [2, 4], [3 6]] 으로 변경됨
b[0].append(4) --> 두 변수(a, b) 모두 첫 번째 요소가 [1,2] -> [1,2,4]로 변경됨
- 개념 : 새로운 객체를 만드는데 안쪽 요소는 원본 객체를 그대로 포인팅 함
- 만약에 객체가 compound(복합체)로 구성된 경우 바깥쪽 부분(Outer level)에 대해서만 새로운 객체 생성
- compound 내부의 값은 원본의 값을 동일하게 가리키고 있음(포인팅)
Deep Copy (깊은 복사)
import copy
a = [[1, 2], [2, 4]]
b = copy.deepcopy(a)
b[0].append(4) --> 새로운 변수(b)만 변경됨
- 개념 : 동일한 구조의 완전히 새롭고 독립된 변수 객체가 됨.
- 원본 객체와 그 안에 포함된 모든 복합체 요소들(즉, 재귀적으로)까지 모두 새로운 객체로 복사
- = 구조를 모두 동일하게 적용 + 새로운 메모리 할당
+ 추가 설명
- 리스트는 가변(mutable) 객체이기에 한 변수가 수정되면 다른 변수에도 반영됨
- 만약 튜플 객체를 Assignment 한 뒤 새로운 객체를 수정하면 TypeError가 발생
'tuple' object does not support item assignment
+ 관련 이미지 설명

-------------------------------------------------------------------------------
참고 : 실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지 (inflearn, 미쿡엔지니어)
-------------------------------------------------------------------------------
'프로그래밍 > python' 카테고리의 다른 글
| [python] Class Construct(__init__) (0) | 2025.12.12 |
|---|---|
| [python] Pypi (pip install) (0) | 2025.12.12 |
| [python] Common Coding Mistakes (0) | 2025.12.09 |
| [python] Docstrings(String Literal) (0) | 2025.12.09 |
| [python] Scope(local, global, enclosing) (0) | 2025.12.07 |