본문 바로가기
Study

깊은 복사, 얕은 복사

by 즐거운개발 2022. 7. 1.

딕셔너리 객체를 복사해 활용하는 과정에서 에러가 발생했다.

원인은 얕은 복사... 거의 2시간 이상을 원인 찾느라 소비했다.

 

dic1 = {'a': '1', 'b': '2'}
dic2 = dic1

dic2['a'] = '2'

 

 

여기서 dic2['a']는 '1'이 나올 것이라 예상할 수 있다.

 

그럼 dic1['a']는?? 값을 할당한 후 조작한 적이 없으니 '1'일까?

 

아니다. 답은 '2'. 왜냐면 딕셔너리를 '='을 이용해 할당할 경우, 주소값이 복사되는 얕은 복사가 일어나기 때문이다.

 

따라서, 값 자체를 복사받는 깊은 복사를 원한다면 아래와 같이 copy() 메서드를 이용하자.

 

dic2 = dic1.copy()

 

 

댓글