객체라는 말이 등장하는데요. 자료형과 자료구조를 포함하는 말이 객체입니다. 파이썬에선 모든 것이 객체인데요. 나중에 더 자세히 다루겠습니다.
우리는 파이썬 제공 자료형인 숫자형,문자열,논리형과 자료구조인 리스트,튜플,집합,딕셔너리를 배운상태입니다.
어떤 자료구조는 원소를 변경할 수 있었고, 어떤 자료구조는 변경할 수 없었습니다. 변경한다는 것은 수정, 삭제, 추가를 의미합니다.
예를들어 리스트는 원소의 변경이 가능했지만 튜플은 그렇지 않았습니다. 문자열도 원소의 변경이 불가능합니다.
이런 의문이 생길 수 있습니다. 숫자형은 변경이 가능할까?
결론부터 말씀드리면 불가능합니다. 아니 이렇게 변경하면 되는거 아니야? 라고 생각하실 수도 있어요. 아래와 같이요.
>>> a=3
>>> a
3
>>> a=5
이건 변경이 아니라 '재정의'입니다. 변경을 더 정확히 이해하려면 객체의 세가지 특성을 알아야 합니다. 객체는 아래와 같은 세가지 특성을 갖습니다.
- 값(value)
- 유형(type)
- 정체성(id)
리스트를 하나 정의해봅시다.
>>> L=[1,2,3]
값은 [1,2,3]입니다. 유형은 type함수의 결과인 list입니다. 정체성은 id함수를 적용하면 됩니다.
>>> id(L)
2290667690048
id 함수의 반환값은 '고유주소'값입니다. 우리가 정의한 리스트는 메모리 어딘가에 저장되어 있을텐데 그곳의 주소입니다. 변경한다는 것은 유형과 정체성을 유지한 채로 값만 바꾸는 것을 의미합니다.
리스트에서 한 값을 바꿔봅시다.
>>> L[0]=100
>>> L
[100, 2, 3]
그리고 주소를 확인합시다.
>>> id(L)
2290667690048
변하지 않았습니다. 이번에는 정수를 하나 정의합시다.
>>> a=3
>>> id(a)
140727555983072
5로 바꿔봅시다.
>>> a=5
>>> id(a)
140727555983136
주소가 바뀌었죠? 변경이 아니라 '재정의'이기 때문입니다.
자료형과 자료구조들은 변경가능여부에 따라 아래와 같이 가변객체와 불변객체로 나뉩니다.
가변 객체(mutable object) : list, dict, set
불변 객체(immutable object) : int, float, string, bool, tuple
'파이썬 > 통계분석' 카테고리의 다른 글
[파이썬 강의] 38. 산술연산자 (0) | 2021.10.13 |
---|---|
[파이썬 강의] 37. 연산자 한눈에보기 (0) | 2021.10.13 |
[파이썬 강의] 35. 자료구조 요약하기(리스트,튜플,딕셔너리,집합) (0) | 2021.10.07 |
[파이썬 강의] 34. 자료구조들 사이의 변환(리스트,튜플,딕셔너리,집합) (0) | 2021.10.07 |
[파이썬 강의] 33. 집합 연산 (메소드를 이용하는 방법) (0) | 2021.10.07 |
댓글