[스터디] Python Mutable vs Immutable

강세준·2023년 2월 27일
0

Mutable vs Immutable

  • 파이썬에서의 객체는 수정가능한 타입(mutable)과 수정 불가능한 타입(Immutable)이 존재한다.
    • Immutable
      • Immutable 객체는 생성된 후에 값을 변경할 수 없다.
      • int, floating-point numbers, string, tuple등이 속한다.
      • 해당 객체에 새 값을 할당하면 파이썬은 기존 객체를 수정하지 않고 메모리에 새 객체를 생성한다.

    • Mutable
      • Mutable 객체는 생성된 후에 값을 변경할 수 있다.
      • list, set, dictionary등이 속한다.
      • 해당 객체를 수정하면 새 객체를 만들지않고 현재 메모리에 할당된 객체를 수정한다.

Example

  • Immutable

  • Mutable

Shallow Copy vs Deep Copy

  • Shallow copy
    • 새로운 복합 객체를 만들고 원본 객체를 가리키는 참조를 새로운 복합 객체에 삽입한다.
  • Deep copy
    • 새로운 복합 객체를 만들고, 재귀적으로 원본 객체의 사본을 새로 만든 복합 객체에 삽입한다.

Example

  • Shallow copy

  • Deep copy

example 2를 살펴보면 Shallow copy 같은 경우 List, Dictionary와 같은 mutable한 객체들은 복사되지 않는 것을 볼 수 있고
이것이(원본 객체를 가리키는 참조를 새로운 복합 객체에 삽입한다.)을 의미한다.

반면 Deep copy는 mutable한 객체 까지 모두 복사 하는 것을 볼 수 있다.
단 Deep Copy는 모든 것을 복사하기 때문에 속도가 느리고 복사본 간에 공유할 의도가 있으면 Shallow copy를 사용하는 것이 좋다.

참고자료

https://wikidocs.net/32277
https://docs.python.org/ko/3/library/copy.html
https://stackoverflow.com/questions/2612802/how-do-i-clone-a-list-so-that-it-doesnt-change-unexpectedly-after-assignment

profile
데이터를 탐구하는 개발자

0개의 댓글