1. 파이썬 제공 자료형
ㅇ 기본 자료형 : int(정수형), float(실수형), complex(복소수형), bool(논리값형)
ㅇ 군집 자료형 : str(문자열), list(리스트), tuple(튜플), dict(사전), set(집합)
ㅇ 기타 자료형 : bytearray, bytes, frozenset
- ByteArray : 저수준 바이트 처리용
※ 자료형의 확인 및 검사 함수
- type(대상)
. 例) type(123) => 'int', type('Hello') => 'str',
type([]) => 'list', type(()) => 'tuple' 등
- isinstance(대상,자료형)
. 例) isinstance(4.2,int) => false, isinstance(4.2,float) => true
2. 파이썬의 기본 자료형
ㅇ 숫자형 : int(정수형), float(실수형), complex(복소수형) ☞ 파이썬 숫자형 참조
ㅇ 논리형 : bool (값 : True/False)
- False : 다음 모든 경우에 취해지는, 사전 정의된 내장 상수
. 거짓 값(False), 숫자 0 값, None 값,
빈 컬렉션(빈 문자열 '', 빈 리스트 [], 빈 튜플(), 빈 딕셔너리{})
- True : 위 False 값 이외에는 모두 참 값(True)이라는, 사전 정의된 내장 상수
- [참고]
. 적용 가능 연산자 : 비교연산자(==,!=,<,>,<=,>=), 논리연산자(and,or,not)
. 객체 비교 : 값 비교가 아닌, 객체 비교에는, is 및 is not 을 사용
- 例)
. true_value = (0 < 100) # True로 판정 할당
. false_value = (0 > 100) # False로 판정 할당
ㅇ NoneType 형 : 내장 상수인 None 값 하나 만 유일하게 존재
- None 값은, 값의 부재를 나타낼 때에 사용됨
. 例) 기본 인자가 함수에 전달되지 않을 때 등
- None 값의 논리판단은 False 임
3. 파이썬의 군집(컬렉션) 형태의 자료형 : (자료구조)
※ 파이썬은, 별도 라이브러리 도움 없이도, 데이터 컬렉션(모음)을 다룰 수 있는,
- 다양한 자체 내장 자료구조를 제공 함
ㅇ 시퀸스(Sequence) 형태 : 순서가 중요함
* 특징
. 순서 있음
. 인덱싱 가능 : [0],[1],... (인덱스 위치로 개별 원소 식별,참조 가능)
. 슬라이싱 가능 : [ : ] (시작,끝을 정하여 범위 참조)
- 문자열 (String)
. 3.x 부터, 기본이 유니코드 임
.. (str) : 유니 코드
.. (bytes) : raw unsigned 8-bit (원시 이진 데이터, 또는, 1 바이트 고정 문자)
.. (bytearray) : bytes와 같으나, 개별 바이트별 변경 가능 (bytes는 바이트별 변경 불가)
- 리스트 (List) ☞ 파이썬 리스트 참조
. 例) l = ['red','green','blue']
. 순서가 있는 값의 나열이며, 읽기 쓰기 모두 가능
- 튜플 (Tuple)
. 例) t = (1,2,3)
. 리스트와 유사하나, 읽기 전용이며, 속도 빠름
. 개별 요소 변경이 불가능 (Immutable)
.. 요소 추가,제거, 튜플 확장,뒤집기,정렬,슬라이싱 등이 안됨
ㅇ 비 시퀸스(Non Sequence) 형태 : 순서가 중요하지 않음
- 사전 (Dictionary)
. 例) d = { 'a' : 1, 'b' = 2, 'c' = 5 }
. 리스트,튜플,집합과 달리, 반드시 키를 사용하여 원소들에 접근함
- 집합 (Set)
. 例) s = {1,2,3} 또는 s = set([1,2,3])
. 순서가 없으나, 중복을 허용 않는 값들의 모음
4. 파이썬의 자료형에 대한 특징별 구분
ㅇ 변경 가능 : 리스트, 사전
ㅇ 변경 불가능 : 숫자형, 문자열, 튜플, (집합의 원소 값, 사전의 키)
- 특히, 변경 가능한 리스트를 (집합의 원소 값, 사전의 키)로 사용 못함
ㅇ 순서 있음 (시퀸스 타입) : 리스트(변경 가능), 문자열(변경 불가), 튜플(변경 불가), range
ㅇ 순서 없음 (비 시퀸스 타입) : 사전, 집합
ㅇ 순서 없고, 키로 접근 : 사전
ㅇ 순서 없고, 중복 불가 : 집합
ㅇ 데이터 컬렉션(모음)을 다룰 수 있음 : 문자열, 리스트, 튜플, 사전, 집합
ㅇ 매핑 가능 (매핑 타입) : 사전
- 각 항목 마다 값을 가리키는 키를 갖음
ㅇ 소속성 여부 : 집합 (set : 변경 가능, frozenset : 변경 불가)
ㅇ 속도 빠름 : 집합
ㅇ flat sequence : (str, bytes, bytearray, memoryview, array.array)
- 그 자신 메모리 공간에 주로 동일 타입의 데이터들을 순서대로 저장시켜 둠
ㅇ container sequence : (list, tuple, collections.deque)
- 다른 종류의 타입을 갖는 실제 데이터가 담긴 객체에 대한 참조
ㅇ Iterable 객체 타입 : list, dictionary, set, string, tuple, bytes
5. 정적 타입 선언 방법 (타입 힌트, Type Hint)
ㅇ [형식] 변수명 : 타입
- 例) my_variable: str => "나의 변수는 문자열 타입의 값"임을 알려줌