Python의 비밀스러운 삶: 위험한 리플렉션

발행: (2026년 1월 8일 오후 12:19 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

파이썬 별칭, 레퍼런스, 그리고 얕은 복사의 함정 이해하기

Timothy는 원본 master_list를 변경하지 않고 임시 손님들을 리스트에 추가해야 했습니다. 그는 리스트를 새 변수에 할당하면 복사본이 만들어진다고 생각했습니다:

# Timothy's "Safety" Plan
master_list = ["Alice", "Bob", "Carol"]
draft_list = master_list

Note: 위의 모든 방법은 얕은 복사를 생성합니다. 문자열이나 숫자와 같이 불변 객체들로 이루어진 리스트의 경우 이는 충분합니다. 리스트에 가변 객체(예: 다른 리스트, 딕셔너리)가 포함되어 있다면 내부 객체들은 여전히 공유됩니다. 이런 경우에는 깊은 복사(copy.deepcopy)가 필요합니다.

핵심 정리

  • 할당(b = a)은 복사가 아니라 별칭을 만들 뿐입니다.
  • 얕은 복사를 위해서는 슬라이싱, .copy(), 혹은 list() 생성자를 사용하세요.
  • 중첩된 가변 구조를 다룰 때 얕은 복사의 제한점을 인지하세요.

“이름은 사물 자체가 아니다. 지도는 영토가 아니다.” – Margaret

다음 에피소드: “마트료시카 함정” – 깊은 복사와 중첩 가변 객체 탐구.

Back to Blog

관련 글

더 보기 »