
파이썬의 copy() 함수는 객체를 완전히 복사하여 새로운 객체를 반환합니다. 그러나 기본적으로는 얕은 복사(shallow copy)만 지원합니다. 이는 원본 객체의 참조가 복사된 객체에 전달되는 것을 의미합니다.
예를 들어, list 객체를 복사할 때는 원본 객체의 요소가 변경되면 복사된 객체의 요소도 함께 변경됩니다. 이는 list 객체가 mutable 객체이기 때문입니다.
#hostingforum.kr
python
original_list = [1, 2, 3]
copied_list = original_list.copy()
print(id(original_list)) # 원본 객체의 메모리 주소
print(id(copied_list)) # 복사된 객체의 메모리 주소
original_list.append(4)
print(original_list) # [1, 2, 3, 4]
print(copied_list) # [1, 2, 3, 4]
original_list[0] = 10
print(original_list) # [10, 2, 3, 4]
print(copied_list) # [10, 2, 3, 4]
위 예제에서 원본 객체의 요소가 변경되면 복사된 객체의 요소도 함께 변경됩니다. 이는 list 객체가 mutable 객체이기 때문입니다.
그러나, immutable 객체는 얕은 복사로도 안전합니다. 예를 들어, tuple 객체는 immutable 객체이므로 원본 객체의 요소가 변경되더라도 복사된 객체의 요소는 변경되지 않습니다.
#hostingforum.kr
python
original_tuple = (1, 2, 3)
copied_tuple = original_tuple.copy()
print(id(original_tuple)) # 원본 객체의 메모리 주소
print(id(copied_tuple)) # 복사된 객체의 메모리 주소
original_tuple = (10, 20, 30) # 원본 객체의 요소 변경
print(original_tuple) # (10, 20, 30)
print(copied_tuple) # (1, 2, 3)
따라서, 원본 객체의 속성을 변경하면 복사된 객체도 함께 변경되지 않습니다.
2025-06-07 08:37