개발자 블로그
[윤성우의 열혈 파이썬 중급편] - 2. immutable & mutable 객체 본문
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)가 생성이 된 것.
함수를 짜면서 객체에 대한 성질을 잘 알지 못한다면 원하는 값을 도출해내기 어려울 것이다. 그리고 도출을 해냈더라도 원래의 값이 변할 수도 있다는 것을 유의하여 함수를 작성해야 한다.
'파이썬 > 윤성우의 열혈 파이썬 중급편' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] - 5. map과 filter 그리고 리스트 컴프리헨션 (0) | 2022.04.27 |
---|---|
[윤성우의 열혈 파이썬 중급편] - 4. Iterable 객체와 Iterator 객체 (0) | 2022.04.26 |
[윤성우의 열혈 파이썬 중급편] - 3. 깊은 복사와 얕은 복사 (0) | 2022.04.26 |
[윤성우의 열혈 파이썬 중급편] - 1. 레퍼런스 카운트와 가비지 컬랙션 (2) | 2022.04.25 |
[윤성우의 열혈 파이썬 중급편] - 0. prolog (0) | 2022.04.22 |