개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.07 08:36

copy() 함수의 사용법에 대해 도움을 부탁드립니다.

목록
  • RESTful도령 오래 전 2025.06.07 08:36 인기
  • 321
    1
저는 파이썬의 copy() 함수를 사용하여 객체를 복사할 때, 원본 객체와 복사된 객체가 연결되어 있는지 궁금합니다.

원본 객체의 속성을 변경하면 복사된 객체도 함께 변경되는지 확인하고 싶습니다.

예를 들어, list 객체를 복사하여 원본 객체의 요소를 변경했을 때, 복사된 객체의 요소도 함께 변경되는지 확인하고 싶습니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    파이썬의 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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,919건 / 2 페이지

검색

게시물 검색