오도원입니다.

건강과 행복을 위하여

Development/Python

Python. 깊은 복사와 얕은 복사; deep copy & shallow copy

오도원공육사 2020. 9. 8. 14:25
반응형

1. 얕은 복사(shallow copy)

a = {'name' : 'Kim', 'age' : 18}
b = a
b['name'] = 'Choi'
print('b:', b)
print('a:', a)

바로 할당을 할 시 얕은복사가 일어난다. 

==로는 deep copy와 shallow copy를 구분할 수 없다. is함수를 써야 완전히 같은지 비교할 수 있다. is의 리턴값이 True일 경우 완전히 같은 값이다.

2. 깊은 복사(Deep copy)

1) import copy

import copy
a = {'name' : 'Kim', 'age' : 18}
c = copy.deepcopy(a)
c['name'] = 'Choi'
print('c:', c)
print('a:', a)

2) import json

import json
deep = json.loads(json.dumps(array)) # json.dumps : object -> string, json.loads : string -> object

object -> string -> obejct의 방식으로 문자열로 한번 바꾸고 다시 obejct로 바꾸는 방식으로 깊은복사를 수행한다.

3. Deep copy check : 'is'

==로는 값이 같은지만 확인하고 is로는 완전히 같은 인스턴스인지를 비교할 수 있다. 깊은복사 확인은 is로 할 수 있다.

 

반응형