파이썬은 자바나 C와 달리 데이터타입을 따로 지정하지 않아도 literal과 같은 식별자 등을 통해 알아서 인식하다. 예를 들어 숫자만 있으면 int, 3.4와 같이 .이 있으면 float, 따옴표가 있으면 문자열로 인식하는 것처럼 말이다.
파이썬에서 다루는 숫자는 크게 4가지로 나눠진다.
1. int -> 다시 10진법, 2진법(0b2), 8진법, 16진법 등으로 나눌 수 있다.
2. float
3. 복소수 (1+3j)
4. bool (True, False)
이 중 복소수는 잘 사용하지 않는다. 이러한 파이썬에서의 숫자는 atomic으로, 뒤에서 다룰 container 혹은 collection과 구별되는 단일의 값이다.
부동소수점. 소수점 자리가 고정된 것이 아니다. 근삿값의 계산으로, 정확한 계산이 아니라 연산 속도가 빠르다.
0.1 + 0.1 + 0.1
이때의 결과로 0.30000...0004가 나오는 것을 알 수 있다.
float은 맥시멈값이 무한대다.
사진과 같이 맥시멈 값에 1을 더해도 그 전과 동일하다. 즉, 이것이 가능한 녀석은 무한대밖에 없다. 이말인즉 무한대의 데이터타입은 float이라는 말과 같다.
float()은 string도 float으로 만들 수 있다.
문자열은 대표적인 container 혹은 collection이다. 또한 homo로, 단일한 성질의 요소만을 갖는다( <--> 리스트).따라서 hetero에 비해 요소의 타입을 일일이 체크하지 않기 때문에 연산이 빠르다. 세 가지 특징으로 정리할 수 있다.
1. homo
2. sequence(인덱싱, 슬라이싱 가능, range도 시퀀스)
3. immutable
크게 4가지로 나눌 수 있다.
1. str
2. byte(immutable)
3. bytearray(mutable)
(4. memoryview)
리스트와 튜플의 세 가지 특성 중 하나가 다르다.
리스트 : hetero / sequencial / mutable
튜플 : hetero / sequencial / immutable
리스트의 mutable한 속성 때문에, 자칫 코드를 잘못 짜면 코드가 엉켜버리기도 한다. 안전하게 짜려면 immutable로 하는 것이 좋을 수 있다. tensor는 참고로 immutable.
리스트의 mutable한 속성 때문에 lst[:] 또는 lst.copy()와 같은 값만 배끼는 기능을 수행하는 녀석들이 있다.
집합은 set과 frozenset으로 나뉜다. set은 mutable하고, frozenset은 immutable하다. 또한 set은 내부적으로는 순서가 있지만 우리가 그 순서를 고정할 수 없다. nonsequencial이고 따라서 인덱싱, 슬라이싱 불가. 또한 element로 mutable한 녀석이 올 수 없다. 리스트, 셋, 딕셔너리가 그렇다. 중복요소 제거로 자주 사용되는 셋.
사전, dictionary는 매핑형 타입이고, 앞서 말한대로 mutable하고, key값이 중요하다. 이 키값으로는 mutable한 녀석이 올 수 없다. value엔 가능.
결국 데이터에 타입의 속성이 있는 것이 파이썬이 다루는 "값", value가 되는 것이다.
이러한 데이터타입을 지닌 값들마다 연산자의 역할이 있고, 연산자로 이뤄진 expressions(식)을 배우고 내장 키워드와 함수를 배워 식별할 줄 아는 것이 파이썬을 학습하는 것이다.
결론:파이썬 공식문서의 라이브러리 레퍼런스, 용어집을 참고하며 익히자.