Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 불변(Immutable)이란 무엇일까?

파이썬에서 불변(Immutable)이란 무엇인가?

파이썬은 다양한 데이터 타입의 객체를 정의하며, 이러한 객체들은 모두 메모리에 저장됩니다. 그리고 객체마다 생성된 이후에 내용을 변경할 수 있는지 여부가 다른데, 이 특성에 따라 객체는 크게 두 가지로 나뉩니다.

  • 불변(Immutable) 객체: 한 번 생성되면 내용을 변경할 수 없는 객체
  • 가변(Mutable) 객체: 생성된 후에도 내용을 자유롭게 변경할 수 있는 객체

불변(Immutable) 객체의 종류

정수(int), 실수(float), 복소수(complex)와 같은 숫자형 객체는 메모리에 저장된 값을 직접 수정하는 것이 불가능합니다. 예를 들어 변수에 새로운 숫자를 대입하면 기존 값이 바뀌는 것이 아니라, 새로운 객체가 만들어져 변수가 그 객체를 참조하게 됩니다.

숫자형 외에도 다음과 같은 타입들이 대표적인 불변 객체입니다.

  • 정수, 실수, 복소수 등 숫자형(number)
  • 문자열(string)
  • 튜플(tuple)

가변(Mutable) 객체의 종류

반면 리스트(list)는 가변 객체입니다. 리스트에 담긴 항목은 생성 후에도 수정, 삭제, 추가가 자유롭기 때문입니다. 이 외에도 딕셔너리(dict)와 집합(set) 역시 가변 객체에 해당합니다.

왜 불변과 가변의 구분이 중요한가?

객체의 불변 여부는 코드의 동작 방식에 큰 영향을 미칩니다. 불변 객체는 함수에 전달하거나 딕셔너리의 키로 사용할 때 안전하게 쓸 수 있고, 여러 변수가 같은 객체를 공유해도 값이 의도치 않게 변경되는 문제가 발생하지 않습니다. 반면 가변 객체는 편리하지만, 참조를 공유하는 상황에서 원본 데이터가 함께 변경될 수 있으므로 주의해서 다루어야 합니다.