개발자 블로그

[윤성우의 열혈 파이썬 중급편] - 2. immutable & mutable 객체 본문

파이썬/윤성우의 열혈 파이썬 중급편

[윤성우의 열혈 파이썬 중급편] - 2. immutable & mutable 객체

hayongwoon 2022. 4. 26. 00:17

immutable & mutable

객체가 지닌(객체에 저장된) 값이 수정이 불가능한 객체를 'immutable 객체'라고 하며, 반대로 객체가 지닌 값이 수정이 가능하면 'mutable 객체'라고 한다.

 여기서 수정이 가능하다는 것은 메모리 주소가 바뀌지 않고 값을 수정할 수 있다는 것이다. 아래 예제 코드를 보며 부연 설명을 해보겠다.

##리스트##
>> r = [1, 2, 3]
>> id(r) #리스트의 메모리 주소
12345
>> r += [4, 5, 6]
>> r
>> [1, 2, 3, 4, 5, 6]
>> id(r)
12345 #값이 바뀌었지만, 위 주소와 동일한 것을 확인할 수 있다.

 

mutable 객체로는 대표적으로 리스트와 딕셔너리가 있고, immutable 객체로는 대표적으로 튜플, 문자열이 있다.

##튜플##
>> t = (1, 2, 3)
>> id(t) #튜플의 주소
12345
>> t += (4, 5, 6) #아예 새로운 튜플이 생성이 된다.
>> t
>> (1, 2, 3, 4, 5, 6)
>> id(t)
56785 #주소값이 바뀐 것을 확인할 수 있다. 새로운 튜플(t)가 생성이 된 것.

 

 함수를 짜면서 객체에 대한 성질을 잘 알지 못한다면 원하는 값을 도출해내기 어려울 것이다. 그리고 도출을 해냈더라도 원래의 값이 변할 수도 있다는 것을 유의하여 함수를 작성해야 한다.