David의 개발 이야기!

얕은 복사 vs 깊은 복사 본문

파이썬 기초

얕은 복사 vs 깊은 복사

david.kim2028 2022. 1. 16. 00:25
반응형

1. Mutable 과 Immutable 의 정의

-> Mutable : 값이 변하는                     리스트, 딕셔너리

-> Immutable : 값이 변하지 않는          숫자, 문자열, 튜플, boolean

 

 

2. 얕은 복사, 깊은 복사 

2-1 얕은 복사란? 

얕은 복사는 인스턴스가 메모리에 새로 생성되지 않는다. 즉, 값 자체를 복사하는 것이 아니라, 주소값을 복사하여 같은 메모리를 가리킨다.

 

얕은 복사 개념

 

2-2 깊은 복사란? 

데이터를 통째로 복사하며, 복사된 두 객체는 독립적인 메모리를 차지한다. 

 

깊은 복사 개념

 

예시 1) 리스트 

a = [1, 2, 3] 
b = a
print(a is b)

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)

a = [1, 2, 3] 
b = a.copy() 
print(a is b)

#결과
True
False
False

 

 

예시 2) 딕셔너리

a = {"a":1, "b":2} 
b = a
print(a is b)

a = {"a":1, "b":2}
b = {"a":1, "b":2}
print(a is b)

a = {"a":1, "b":2} 
b = a.copy() 
print(a is b)

#결과
True
False
False

 

 

예시3 ) 튜플

a = (1, 2, 3) 
b = a
print(a is b)

a = (1, 2, 3)
b = (1, 2, 3)
print(a is b)

# tuple은 copy 메소드 없음

#결과
True
False

 

 

예시4) 집합

a = set([1, 2, 3]) 
b = a
print(a is b)

a = set([1, 2, 3])
b = set([1, 2, 3])
print(a is b)

a = set([1, 2, 3])
b = a.copy() 
print(a is b)

#결과
True
False
False

 

 

 

반응형

'파이썬 기초' 카테고리의 다른 글

딕셔너리 자료형  (0) 2022.01.24
튜플 자료형  (0) 2022.01.24
리스트 자료형  (0) 2022.01.24
파이썬 자료형 문자열  (0) 2021.12.14
파이썬 자료형 숫자형  (0) 2021.12.14
Comments