immutable : 변하지 않는 자료형

정수, 실수, 문자열, 튜플 

 

a='hello world' 
print(id(a),a) #4510859888 hello world
a+='...change' 
print(id(a), a) #4512169808 hello world...change

a라는 변수에 문자열을 입력했다.

같은 a라는 변수에 다른 문자열을 += 연산으로 추가하여 변경하였다.

a 변수에 있는 문자열이 수정되었다고 생각할 수 있지만,

id()으로 a가 저장된 주소값을 확인해보면, 다른 객체 a가 생성된 것을 확인할 수 있다.

 

기존의 hello world라는 문자열 객체는 객체를 참조하고 있는 변수가 아무것도 없기 때문에 사라진다.

 

 

 

 

mutable : 변할 수 있는 자료형

리스트, 딕셔너리, 집합

b=[1,2,3,4]
print(id(b),b) #4510735808 [1, 2, 3, 4]
b.append(5)
print(id(b),b) #4510735808 [1, 2, 3, 4, 5]

리스트에 append로 값을 추가했다.

b의 주소값이 유지되고, 자료가 변경되었다.