파이썬 자료형의 특성을 알아보자
구분 |
자료형 (type) |
변경가능성 (mutable) |
반복가능성 (iterable) |
불리언 | bool | X | X |
숫자 | int | X | X |
float | X | X | |
시퀀스 | str | X | O |
bytes | X | O | |
list | O | O | |
tuple | X | O | |
매핑 | dict | O | O |
집합 | set | O | O |
frozenset | X | O |
특성을 이야기하기 전에 먼저
Call by assignment에 대해서 알아봐야하는데요.
Call by assignment
자바를 공부하였다면 Call by reference(참조에 의한 호출), Call by Value(값에 의한 호출) 에 대해서는 들어봤는데 이건 무엇일까? 하는 생각이 들게 됩니다.
간단히 보자면 두가지를 섞어 놓은것이라 이해 하면 되겠습니다.
mutable 자료형에게는 참조를 호출, immutable 자료형에게는 값에 의한 호출을 하게 됩니다.
mutable
그렇다면 mutable과 immutable은 무엇일까??
mutable 자료형은 생성당시의 값이 변할수 있고, immutable은 변할수 없다. 만약에 변하게 된다면 이것은 다른 객체가 되었다는것을 의미한다.
간단한 예시로 리스트는 mutable하고 tuple은 immutable하다. 리스트는 변경 가능한 자료형인데 반해 튜플은 변경 불가능한 자료형이라는 것이다.
리스트는 값이 추가되어도 똑같은 객체를 참조하고 있는것을 볼수 있다.
하지만 튜플은 (5,)라는 튜플이 추가되어지니깐 새로운 객체를 참조하고 있다.
여기까지는 문제가 되지 않는다. 그렇구나 하고 넘어갈 수 있는데.. 중요한건 복사를 하게 되면서 발생한다..
DeepCopy
복사의 종류는 얉은 복사와 깊은 복사 2가지가 있다.
위에서 나온 복사의 종류는 얉은 복사에 속하게 된다. 레퍼런스값만 복사하게 되는것이다.
하지만 깊은 복사는 객체의 레퍼런스를 복사하는게 아닌, 내부 객체 모든것을 복사하게 되는것이다. 즉 복사하는 객체는 본래의 객체의 레퍼런스와 다른 레퍼런스를 참조하게 되는것이다. 메모리 상에 레퍼런스가 달라지면 곧 다른 객체를 의미한다!!
그리고 마지막으로 Iterable
Iterable은 간단하게 말하면 for을 쓸수 있는가 생각해보면 되겠다.
숫자나 True, False를 반복문의 범위로 쓸 수 없다.
하지만 문자열이나 리스트, 튜플은 반복이 가능한 객체라는것이다. 이것만 알면 끝.
'Python' 카테고리의 다른 글
아나콘다 가상환경 (0) | 2020.05.07 |
---|---|
파이썬 from, import 에 대한 모든 것 (0) | 2020.04.29 |
파이썬 콘솔에서 이미지 출력하기 (0) | 2020.04.29 |
python -001. 대화형 모드에서 쓸수 있는 help(), dir(), type() (0) | 2020.04.28 |
파이썬! 뿌셔버리겠어!! (0) | 2020.04.28 |
댓글