Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- redis
- Wil
- 파이썬
- NoSQL
- 오블완
- 연습
- Doker
- 아티클 스터디
- docker
- 티스토리챌린지
- 쿠키(cookie)
- 코딩테스트
- github
- git
- ERD
- viewsets
- CS
- 개발공부
- flask
- Python
- nginx
- SQL
- Til
- django
- JWT
- web
- 세션(Session)
- 도커
- 장고
- 자료구조
Archives
- Today
- Total
SteadyDrills
[TIL]파이썬 - 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) 본문
240719
파이썬에서 복사(copy)란 객체를 다른 변수에 할당하는 과정이다.
복사는 크게 두 종류가 있다. 얕은 복사와 깊은 복사.
얕은 복사 (Shallow Copy)
얕은 복사를 수행하면 새로운 객체가 생성되지만, 그 내부의 객체들은 원래 객체와 같은 객체를 가리킨다.
결국 호출명만 바뀔 뿐 원본객체에도 영향을 준다는 이야기이다.
original_list = [1, 2, [3, 4]]
shallow_copied_list = original_list
print(original_list) # [1, 2, [3, 4]]
print(shallow_copied_list) # [1, 2, [3, 4]]
shallow_copied_list[2][0] = 99
print(original_list) # [1, 2, [99, 4]]
print(shallow_copied_list) # [1, 2, [99, 4]]
깊은 복사 (Deep Copy)
깊은 복사는 객체와 그 내부의 모든 객체까지 완전히 복사한다. 이 말은 깊은 복사를 수행하면 원본 객체와 독립적인 새로운 객체가 생성된다는 뜻이다.
import copy
original_list = [1, 2, [3, 4]]
deep_copied_list = copy.deepcopy(original_list)
print(original_list) # [1, 2, [3, 4]]
print(deep_copied_list) # [1, 2, [3, 4]]
deep_copied_list[2][0] = 99
print(original_list) # [1, 2, [3, 4]]
print(deep_copied_list) # [1, 2, [99, 4]]
이렇듯 복사를 어떤 식으로 하냐에 따라 원본 객체에 영향을 주고 안 주고 가 정해지므로 내가 생각한 로직에 잘 맞춰 쓰는 게 중요하다. 헷갈린다면 print를 통해 원본객체를 꼭 확인하는 습관을 들여야겠다.
'PYTHON' 카테고리의 다른 글
[TIL] 인스턴스 메서드의 접근 지정자 (Access Modifiers) - Public Methods,Protected Methods,Private Methods (2) | 2024.07.23 |
---|---|
[TIL]객체의 비교: 동일성(is)과 동등성(==) (0) | 2024.07.22 |
[TIL] 재귀함수 & lambda함수 (2) | 2024.07.18 |
[TIL] 파이썬 LEGB 규칙 (0) | 2024.07.17 |
[TIL] 코딩 테스트 연습- 없는 숫자 더하기 (0) | 2024.07.16 |