«   2024/05   »
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
Archives
Today
Total
관리 메뉴

Code IT

Python - 객체복사 (얕은 복사/깊은 복사) 본문

Python & Django

Python - 객체복사 (얕은 복사/깊은 복사)

Codit 2019. 1. 30. 22:58
# 파이썬에서 원시값을 가지는 일반 변수를 제외한 나머지 객체들은 모두 메모리를 공유한다.

# 원시값을 가지는 일반 변수
a = 10
b = a

print(a, b)

a = 20

print(a, b)

# 메모리를 가지는 객체 instance
list_a = [1, 2, 3]
list_b = list_a # 메모리 공유

print(list_a, list_b)

list_a[0] = 9 # 메모리의 원소값 변경

print(list_a, list_b)

# 객체의 메모리를 재할당 할 경우 메모리를 복사되지 않는다.
list_c = [1, 2, 3]
list_d = list_c

print(list_c, list_d)

list_c = [4, 5, 6] 

print(list_c, list_d)

# 복사에는 얕은 복사(Sallow Copy)와 깊은 복사(Deep Copy)가 있다.
# Sallow Copy는 객체의 메모리를 공유하는 것으로 위의 복사와 같다.
# Deep Copy는 객체내의 원소값을 복사해 메모리를 분리시키는 복사다.
# Deep Copy는 Python의 copy모듈을 통해 가능하다.

import copy

list_e = [1, 2, 3]
# Sallow Copy는 copy.copy()로 사용한다.
list_f = copy.deepcopy(list_e)

print(list_e, list_f)

list_e[0] = 100

print(list_e, list_f)

'Python & Django' 카테고리의 다른 글

Python - 함수  (0) 2019.01.30
Python - bool  (0) 2019.01.30
Python - list, set, tuple, dict  (0) 2019.01.30
Python - dictionary (dict)  (0) 2019.01.30
Python - tuple  (0) 2019.01.30
Comments