
빌트인 데이터 타입은 파이썬 자체에서 정의된 데이터 타입이다.
(마치 원룸 들어갈때 원래 있는 가구가 빌트인 가구인것 처럼..)
어떤 데이터의 타입은 type(something)으로 알아낼 수 있다.
카테고리에 따라 아래와 같은 종류가 정의되어 있다.
파이썬에는 정수, 실수, 복소수의 세 가지 숫자 형이 존재한다.
int>>> print(sys.maxsize)
9223372036854775807
>>> type(sys.maxsize)
<class 'int'>
>>> type(sys.maxsize+1)
<class 'int'>
floatsys.float_info를 이용해서 살펴볼 수 있다.>>> print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
complexj를 붙여 만들 수 있다.시퀀스형은 음이 아닌 정수로 인덱싱 할 수 있는 유한한 길이의 순서 있는 집합을 의미한다. (쉽게 말해 기다란 통에 순서대로 데이터들을 담는 형태라고 생각하면 된다.) 그래서 시퀀스형의 데이터타입들은 인덱싱(a[i])과 슬라이싱(a[i:j]), len() 내장함수를 지원한다.
불변 시퀀스형은 시퀀스(열거)형이되 일단 값이 지정되면 값을 변화시킬 수 없다는 의미다.
a = "hello"
a[1] = "y"
# 실행결과
TypeError: 'str' object does not support item assignment
불변 시퀀스형에는 문자열(String), 튜플(Tuple), 바이트열(Bytes)가 있다.
strChar타입이 없다. 한 글자의 문자는 그냥 길이가 1인 문자열이다.list라고 보아도 무방하다.  list는 가변 열거형이고 아무 데이터 타입이나 열거 가능하지만 str는 불변 열거형이며 문자로만 구성되어야 한다는 점이다. str 타입을 list 타입으로 바꾸기 쉽지만, list 타입을 str 타입으로 바꾸는건 일반적이지 않다.tupleempty_tuple = ()
singleton = (1,)
some_tuple = (1, 'a', 1.5, [1,2,'x']) # 아무 타입이나 넣기 가능
bytesbytes() 생성자 또는 b’ 바이트 리터럴로 생성 가능.가변 시퀀스는 어떤 값들의 열거인데 만들어진 후에 변경이 가능한 것.
list[]로 생성한다.Byte Arraysbytes와 기능상 동일하다.bytesarray() 생성자로 만든다.해시 가능한 객체란?
파이썬에서 ”해시 가능한 객체” (Hashable)는 생성 후 객체의 생애주기동안 값이 변하지 않아 해시값이 일정함이 보장되는 객체를 의미한다.
해시값이 변하지 않기에 해시가능한 타입들은 hash 함수를 써서 해시값을 받아올 수 있고,__eq__()또는__cmp__()메서드를 통한 동일성 확인 또는 비교가 가능하다.
이를 통해 중복을 피하거나 다른 객체끼리 비교가 가능하므로 딕셔너리의 키에 쓸 수 있다.
모든 파이썬의 빌트인 불변 타입은 해시가능하고 모든 가변 타입은 해시가능하지 않다.
>>> a = '123'
>>> b = '123'
>>> hash(a) == hash(b)
set# 중괄호로 생성..
a = {1,2,3}
# 추가 가능
a.add(4)
a
> {1, 2, 3, 4}
# 삭제 가능
>>> a.remove(3)
>>> a
{1, 2, 4}
# 인덱싱 안됨 
a[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
frozenset매핑형은 해시 가능한 값을 임의의 객체에 대응(매핑)시키며, 가변 객체이다.
dictdict 생성자 또는 {} 중괄호를 사용해서 생성 가능하다.파이썬에는 False, True의 두 가지 상수 객체가 존재하고 주로 논리값 (참, 거짓)을 나타내는데 사용된다. 하지만 다른 값들도 참 거짓을 나타내는데 사용될 수 있고, bool()을 통해 해당 값이 어떤 논리값으로 해석되는지 알아볼 수 있다. 
기본적으로 파이썬 객체는 클래스에 __bool__() 메서드나 0을 리턴하는 __len__() 메서드를 정의하지 않는 이상 참으로 간주된다. 
거짓으로 간주되는 내장 객체들은 다음과 같다.
NoneFalse0, 0.0, 0j, Decimal(0), Fraction(0,1)‘’, (), [], {}, set(), range(0)bool>>> int.__subclasses__()
[<class 'bool'>, <enum 'IntEnum'>, <enum 'IntFlag'>, <class 'sre_constants._NamedIntConstant'>]
[^2]: 해시 가능하다는건 불변성을 의미한다. 해당 객체가 만들어진 후부터 불변함이 보장됨을 의미한다. 이러한 경우 __hash__()메서드가 존재한다.