728x90

 

* 파이썬 정리(1) 부터 이후 내용들의 예시들은 윤성우님의 열혈파이썬을 참고했습니다.


얕은 복사와 깊은 복사

 

파이썬은 기본적으로 '얕은 복사'를 진행한다.
'얕은 복사'란 객체를 복사할 때, 자료형이 mutable, immutable 중 어느 것이더라도 같은 객체를 참조하게 되는 것이다. '얕은 복사'를 진행하게 된다면 원본과 복사본은 동일 객체를 참조한다. 결과적으로 원본이나 복사본 중 하나를 수정한다면 나머지 다른 것도 수정이 된다.

employee1 = ['computer science', ('male', 'master'), [32, "02"]]
copy_employee1 = list(employee1)

employee1[2][0] += 2
print(employee1)    #['computer science', ('male', 'master'), [34, '02']]
print(copy_employee1)   #['computer science', ('male', 'master'), [34, '02']]


'깊은 복사'란 immutable객체에서 진행되어, 결과적으로 복사본을 수정해도 원본을 유지할 수 있게 된다.
'깊은 복사'를 하기 위해서는 copy모듈의 deepcopy 함수를 사용한다. 

import copy
employee1 = ['computer science', ('male', 'master'), [32, "02"]]
deepcopy_employee1 = copy.deepcopy(employee1)

employee1[2][0] += 2
print(employee1)    #['computer science', ('male', 'master'), [34, '02']]
print(deepcopy_employee1)   #['computer science', ('male', 'master'), [32, '02']]

 


 

728x90

+ Recent posts