[Python] 깊은 복사(Deep Copy), 얕은 복사(Shallow copy) 란?

얕은 복사(shallow copy)

 

얕은 복사(shallow copy)는 변수의 내용을 복사하지만, 가리키는 객체(object)를 공유합니다. 그러므로, 얕은 복사를 통해 복사한 변수의 값을 변경하면, 원본 변수에 영향을 미칩니다.

 

>>> list_example = [1, 2, 3, 4, 5]
>>> shallow_copy_example = list_example
>>> shallow_copy_example[2] = 10
>>> list_example
[1, 2, 10, 4, 5]

 

얕은 복사 예시 이미지

 

위의 코드에서, list_example은 [1, 2, 3, 4, 5]의 리스트를 가리킵니다. list_example을 shallow_copy_example에 얕은 복사를 했습니다. 얕은 복사는 가리키는 객체를 공유하기 때문에 shallow_copy_example[2]의 값을 10으로 변경하였을 때, list_example의 값도 [1, 2, 100, 4, 5]로 변경됩니다.

 


깊은 복사(deep copy)

 

 

깊은 복사(deep copy)는 변수의 내용을 복사하며, 가리키는 객체(object)도 복사합니다. 깊은 복사를 통해 복사한 변수의 값을 변경해도, 원본 변수에 영향을 미치지 않습니다.

 

>>> import copy
>>> list_example = [1, 2, 3, 4, 5]
>>> deep_copy_example = copy.deepcopy(list_example)
>>> deep_copy_example[2] = 10
>>> list_example
[1, 2, 3, 4, 5]

 

깊은 복사 예시 이미지

 

위의 코드에서, list_example은 [1, 2, 3, 4, 5]의 리스트를 가리킵니다. list_example을 copy() 모듈의 deepcopy() 함수를 통해 deep_copy_example에 깊은 복사를 했습니다. 객체도 같이 복사하기 때문에 deep_copy_example[2]의 값을 100으로 변경하였을 때, list_example의 값은 변경 없이[1, 2, 3, 4, 5] 인 것을 확인할 수 있습니다.