파이썬에서 Copy 라이브러리를 임포트하면 deepcopy 메서드를 사용할 수 있다. copy와 deepcopy, 즉 얕은 복사와 깊은 복사는 차이가 있는데, 이는 list에서 확연히 드러난다. copy 메서드를 사용한 얕은 복사에서는 다차원 리스트에 대해 2차원 이상의 내부 요소까지 새로운 객체로 할당되지 않는다.
그러나 set 자료형은 list와는 차이가 있다. set 안에는 set나 list와 같은 자료형을 넣어서 다차원으로 구성할 수가 없다. copy와 다를 점이 없는 것이다.
그렇다면 과연 set type에서도 deepcopy의 실효성이 있을까?
list와 마찬가지로 set에서도 deepcopy 메서드가 잘 작동하는 것을 볼 수 있었다. 출력 결과 값은 copy와 동일했다.
set 안에 이것 저것 넣어보았다.
안 들어간다.
구글링 해보았더니 어떤 블로거 분께서도 나와 비슷한 결론을 내렸다.
https://justdoit709.tistory.com/60
물론 copy 모듈의 copy()와 deepcopy()를 집합에도 사용할 수는 있습니다. 단, 이 둘이 서로 다른 결과를 만들지는 않습니다.
위 블로그 글에 따르면, 집합(set)은 hashable object만을 요소로 가질 수 있으며, 집합에서는 개별 요소를 가리킬 방법을 제공하지 않는다. 그러므로 집합에서는 얕은 복사와 깊은 복사의 차이가 없다.
포인터 관점에서의 차이?에 대해서도 고민하기 시작했다. 포인터나 메모리 같은 부분은 내가 잘 모르는 분야이지만, 실험 방법에 대한 아이디어는 떠올랐다. 파이썬에서 인터프리터 로그를 확인하고 차이점을 보는 것이다.
하지만 글을 쓰다보니 퇴실 시간이 되었다. 아쉽지만 다음 일기로 미루기로 한다...