파이썬 기본 자료형(data type)의 종류
업데이트:
자료는 반드시 형식(type)을 갖는다
엑셀에 익숙한 이들이라면 ‘표시형식’ 또는 ‘서식’이라는 용어를 들어봤을 것이다. 엑셀 시트의 각 셀마다 일반, 숫자, 날짜, 텍스트 등 형식을 지정하면 셀에 입력된 값들의 성격이 바뀌게 된다. 예컨대 특정 셀에 01234 라고 입력하고 ‘숫자’ 형식을 지정하면, 맨 앞의 0을 무시하고 1234로 표시된다. 반면 ‘텍스트’ 형식을 지정하면 0 역시 글자로 인식하여 01234가 그대로 표시된다.
파이썬에서도 어떤 변수에 할당된 자료들은 반드시 고유의 형식을 가져야 한다. 이를 자료형(data type)이라고 부른다. 앞선 포스팅에서 언급했던 숫자형, 문자열과 같이 파이썬에서 기본적으로 제공되는 자료형들이 있고, 사용자가 직접 코딩을 통해 자료의 형식을 정의해서 사용할 수도 있다.
특정 변수의 자료형을 확인하기 위해서는 아래와 같이 type
이라는 함수를 사용한다.
a = 1
b = 2.5
c = '파이썬'
print(type(a))
print(type(b))
print(type(c))
<class 'int'>
<class 'float'>
<class 'str'>
print 함수를 통해 각 변수의 자료형을 출력해보면 각각 정수(int), 실수(float), 문자열(str)이라는 형식을 확인할 수 있다. 자료형의 이름 앞에 붙은 클래스(class)는 일단 자료형과 동일한 의미로 이해하면 된다(일종의 ‘신분’인 셈이다!). 예컨대 <class ‘int’> 라는 것은 ‘정수 자료형’이라고 해석할 수 있다. (클래스를 정의하고 사용하는 방법은 중급 문법에 해당하므로 추후 소개하겠다)
파이썬에서 기본으로 제공되는 자료형들은 크게 스칼라와 컨테이너라는 범주로 나눌 수 있다. 이번 포스팅에서는 각 자료형의 특성을 개괄적으로 살펴보도록 하자.
하나의 변수에 하나의 값을 담는 스칼라(Scalar)
한 변수에 숫자나 참/거짓 등 하나의 값을 담는 자료형들을 묶어 스칼라(Scalar) 자료형이라고 한다. 스칼라의 종류는 다음과 같다.
-
정수(int) : 소수점이 없는 양수/음수 및 0을 포함하는 숫자들을 표현하는 형식
-
실수 또는 부동소수점(float) : 소수점이 있는 숫자를 표현하는 형식. 정수도 float 형식으로 표현할 수 있지만(예컨대 3.0, -10.0 과 같은 방식), 그럴 경우 메모리를 더 많이 차지하게 된다.
-
문자열(str) : 낱글자, 단어, 띄어쓰기, 기호 등으로 구성된 문자들의 배열을 표현하는 형식. 작은 따옴표(‘)나 큰 따옴표(“)로 둘러싸인 값은 기본적으로 문자열 형식을 취하게 된다.
-
값 없음(None) : 값이 존재하지 않는 변수를 생성하려면 ‘값 없음’을 의미하는 어떤 데이터를 변수에 할당해 줘야 하는데, 파이썬에서는 이를 ‘None’으로 정해두었다.
-
불리언(bool) : 어떤 논리 혹은 조건의 참/거짓 판단을 표현하는 형식. ‘True’ 또는 ‘False’라는 두 값 중 하나를 취할 수 있다.
아래의 예제는 None 자료형과 bool 자료형을 변수에 할당하고 출력하는 코드이다. 변수 d와 f는 각각 ‘값없음’과 ‘거짓’을 직접 할당해 준 반면, 변수 e에는 참/거짓을 판단할 수 있는 조건문을 부여했다. 해당 조건은 ‘참’이기 때문에 e의 값을 출력해보면 ‘True’라고 나오는 것을 확인할 수 있다.
d = None
e = (3 > 2)
f = False
print(d, type(d))
print(e, type(e))
print(f, type(f))
None <class 'NoneType'>
True <class 'bool'>
False <class 'bool'>
하나의 변수에 여러개의 값을 담는 컨테이너(Container)
여러 개의 자료를 원소로 묶어 하나의 변수에 담는 형태의 자료형들을 컨테이너(Container) 자료형이라고 한다. 컨테이너의 종류는 다음과 같다.
- 리스트(list)
- 다수의 자료값을 콤마(,)로 구분해 꺽은 괄호
[ ]
로 묶어서 배열 형태로 만든 자료형 - 리스트 안에 담긴 원소들 간에 순서가 있어서 0, 1, 2, …의 인덱스를 붙여 각 원소를 호출할 수 있다
- 원소의 내용을 변경할 수 있다.
- (예시) a = [‘삼성전자’, 40000, True]
- 다수의 자료값을 콤마(,)로 구분해 꺽은 괄호
- 튜플(tuple)
- 리스트와 달리 꺾은 괄호가 아닌 둥근 괄호
( )
를 사용한다. - 원소들 간에 순서가 있고 인덱스로 호출할 수 있는 등 리스트와 성질이 거의 유사하다
- 변수를 한번 생성하면 원소의 내용을 변경할 수 없다는 점에서 리스트와 구별된다.
- (예시) b = (None, [1,2], 3, 3, 3)
- 리스트와 달리 꺾은 괄호가 아닌 둥근 괄호
- 집합(set)
- 물결모양 괄호 ‘{ }’를 사용한다.
- 원소들 간에 순서가 없고, 중복 불가능하기 때문에 생성 시 중복 원소는 제거된다.
- (예시) c = {1, 2, 5}
- 딕셔너리(dictionary)
- 집합 자료형과 형태가 거의 유사하다 (물결모양 괄호, 원소간 순서없음, 중복 불가)
- 각 원소마다 키(key)가 부여되어 키를 통해 원소를 호출할 수 있다.
- (예시) d = {‘삼성전자’ : 10000, ‘Naver’ : 20000, ‘현대차’ : 30000}
여러 값들 사이에 순서를 셀 수 있는 시퀀스(Sequence)
위에서 언급한 자료형들 중에서 구성원소들 사이에 순서를 매겨서 번호대로 원소를 호출할 수 있는 형태들을 묶어 시퀀스(Sequence) 자료형이라고 한다. 문자열(str), 리스트(list), 튜플(tuple)이 대표적인 시퀀스 자료형이다. 이 중 문자열의 경우 위에서 스칼라에 속하는 것으로 설명했지만, 사실 낱글자 하나하나를 원소처럼 취급할 수 있다는 점에서 일종의 ‘문자에 한정된 컨테이너’로 볼 수 있다. 따라서 낱글자에 순서를 매기고 하나씩 호출할 수 있기에 시퀀스에 속한다.
다음 포스팅 부터는 각 자료형들의 특성과 문법에 대해 살펴보도록 하겠다.
댓글남기기