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개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN