본문 바로가기
Python/Python

[Python] mutable과 immutable 객체

by 기록하는_사람 2022. 10. 11.

immutable 객체

📌 immutable 객체

: 값이 변하지 않는 객체.

  int, float, bool, str, tuple, set

 

📌 파이썬은 c, c++과 달리 각 변수마다 메모리가 할당되지 않음.

      파이썬에서는 하나의 immutable 값을 여러 개의 객체가 참조함.

      변수의 값이 바뀔 경우, 참조하는 값이 바뀜.

 

💡 id() : 객체의 고유한 아이디 반환.

a = 1
b = 1 
c = 1

print(id(a), id(b), id(c)) # 1131067932912 1131067932912 1131067932912

a =  5
b = 5

print(id(a), id(b), id(c)) # 1131067933040 1131067933040 1131067932912

+ 추가 설명

더보기

a, b, c는 모두 주소가 같음.

→ a, b, c가 가리키는 값이 같기 때문.

 

값이 바뀔 경우, 주소도 바뀜.

 

mutable 객체

📌 mutable 객체

: 값이 변하는 객체.

  list, set, dict

 

📌 mutable 객체는 생성 시, 메모리를 할당받음. 

li_a = [1, 2, 3]
li_b = [1, 2, 3] 
li_c = [1, 2, 3] 

print(id(li_a), id(li_b), id(li_c)) # 1131069317184 1131069270848 1131069597760
 
li_a.append(5) 
li_b[0] = 1 

print(id(li_a), id(li_b), id(li_c)) # 1131069317184 1131069270848 1131069597760

+ 추가 설명

더보기

list는 mutable 객체이기 때문에, li_a, li_b, li_c는 각각의 메모리를 가짐.

 

값이 변해도 할당된 메모리의 주소가 바뀌지 않음.

 

댓글