훈훈훈
파이썬 : 가변 객체와 불변 객체 본문
# 객체
- 파이썬은 객체라는 단위로 메모리 상에서 정보를 관리
- 객체에는 값(Value), 유형(Type), 정체성(Identity) 3가지 특성이 있다.
> 값(Value) : 메모리에 기록된 내용, 가변 객체는 값이 변할 수 있지만 불변 객체는 변하지 않는다.
> 유형(Type) : type() 함수를 통해 객체의 유형을 알 수 있으며, 데이터의 종류를 나타낸다.
> 정체성(Identity) : id()함수를 통해 알 수 있으며, 각각의 객체를 식별하기 위한 고유번호(즉, 메모리 상에 위치한 주소 값)
- 예시
>>> year = 2020
year라는 변수는2020 이라는 값을 갖는 객체를 가리키는 역할을 한다.
즉, 객체는 메모리에 존재하는 각각의 데이터를 가리킨다.
만약, year += 1을 할 경우 year라는 변수는 2021 값을 가지는게 아니라 2021 객체를 가르키게 된다.
# 가변 객체와 불변 객체
- 가변 객체 : 객체에 할당된 값을 수정할 수 있다.
> 가변 객체 타입으로는 list, set, dick이 존재한다.
- 불변 객체 : 객체에 할당된 값을 수정할 수 없다.
> 불변 객체 타입으로는 int, float, bool, str, tuple 등이 존재한다.
- 예시
1. 가변 객체
위 예제를 살펴보면 test라는 변수의 ID 값과 리스트에 값을 추가해주는 함수를 통해 수정된 값을 가진 test의 ID 값은 동일한 것을 알 수있다. 리스트 타입의 객체(가변 객체)는 call by reference로 동작됬었음을 알 수 있다.
2. 불변 객체
위 예제를 살펴보면 test라는 변수의 ID값과 함수 호출 후 test의 ID 값은 동일한 것을 알 수 있지만, 함수 호출 전후의 값이 동일한 것을 알 수 있다. 즉, 정수 타입의 객체(불변 객체)는 call by value로 동작되었음을 알 수 있다.
'파이썬 > Python' 카테고리의 다른 글
파이썬 : Non-default argument와 Default argument (0) | 2020.01.29 |
---|---|
파이썬 : 스코프(유효 범위)와 클로저 (2) | 2020.01.17 |
파이썬 : 얕은 복사와 깊은 복사 (0) | 2020.01.13 |
파이썬 : 텔레그램 봇(Telegram Bot) 만들기 (0) | 2020.01.09 |
파이썬: 데코레이터를 이용한 시간 측정 (0) | 2019.12.11 |