mutable과 immutable 변수의 차이

PhilAI·2023년 6월 1일
0

mutable vs immutable 변수의 차이는?

파이썬은 모든 것이 객체이기에, 객체를 무작정 복사해서 사용하면 원본 객체가 핸들링되어 데이터가 변경되면서 큰 문제를 발생할 수 있기 때문에 객체에 특징을 파악하고 복사를 해야함

  • Mutable (리스트, 딕셔너리, 집합형):값을 가지고 있는 '객체의 상태를 변경할 수 있는 것'
  • Immutable(수치값,문자열, 튜플): 값을 가지고 있는 '객체의 상태를 변경할 수 없는 것'

개념 이해를 위한 예시

개념을 쉽게 이해하기 위해 다음과 같은 예시를 살펴보자!!

CASE1 - IMMUTABLE

a = 1
b = a
print(a, b) # 1 1

여기서 b의 값을 2로 바꾸면 어떻게 될까?

a = 1
b = a
print(a, b) # 1 1
b = 2
print(a, b) # 1 2

CASE 2 - MUTABLE

a = [1, 2, 3, 4]
b = a
print(a, b) # [1, 2, 3, 4] [1, 2, 3, 4]
a = [1, 2, 3, 4]
b = a
print(a, b) # [1, 2, 3, 4] [1, 2, 3, 4]
b[1] = 0 # 배열 b의 두번째 값을 0으로 바꿔준다.
print(a, b) # [1, 0, 3, 4] [1, 0, 3, 4]

case 1과 달리 원본 배열 a의 두번째 값도 바뀌어 버렸다. 이는 리스트가 Mutable한 특징으로 값이 바뀔 수 있기 때문에 원본배열의 값이 바뀌어 버린 것이다.

자세히 설명하자면, 위에서 a와 b는 같은 주소값을 참조한다. 그런데 list는 Mutable 하기 때문에 b의 값을 바뀌어 버리면 그 주소값에 있는 값을 바꾸어 버리기 때문에 같은 주소값을 참조하던 a도 값이 바뀌게 나오게 되는 것이다.

profile
철학과가 도전하는 Big Data, AI

0개의 댓글