본문 바로가기
지식을 알아가는 시간 지식을 알아가는 시간

프로그래밍 언어에서 ‘데이터 타입(자료형)’이란 무엇이며 왜 구분할까?

읽는 시간 약 7분

데이터 타입(자료형)은 컴퓨터가 값을 숫자로 볼지, 글자로 볼지, 참과 거짓으로 볼지 정해 두는 값의 종류입니다. 같은 20이라도 숫자 20과 글자 “20”은 컴퓨터에게 전혀 다른 값이어서 계산 결과가 달라지고, 때로는 에러가 나기도 합니다. 이 글에서는 파이썬을 예로 들어 기본 데이터 타입 네 가지와 왜 구분해야 하는지, 타입을 바꾸는 방법까지 코드와 함께 알아봅니다.

데이터 타입이란 무엇인가요?

데이터 타입은 변수라는 상자에 담긴 값이 어떤 종류인지 알려 주는 이름표입니다. 변수가 물건을 담는 상자라면, 데이터 타입은 그 상자에 붙은 “숫자”, “글자”, “참과 거짓” 같은 라벨이라고 생각하면 쉽습니다.

컴퓨터는 이 라벨을 보고 그 값으로 무엇을 할 수 있는지 결정합니다. 숫자 상자끼리는 더하고 곱할 수 있지만, 글자 상자는 이어 붙이거나 반복하는 일이 자연스럽습니다. 라벨이 다르면 같은 기호도 다르게 동작합니다.

변수 자체가 낯설다면 파이썬 변수 이름 지을 때 피해야 할 규칙과 에러 대처법 글을 먼저 읽어 보세요.

파이썬의 기본 데이터 타입 네 가지

파이썬에서 가장 먼저 만나는 데이터 타입은 아래 네 가지입니다.

타입 이름뜻예시
int정수20, -3, 0
float실수(소수점이 있는 숫자)3.5, 0.1
str문자열(글자)“홍길동”, “20”
bool참 또는 거짓True, False

값이 어떤 타입인지는 type()으로 확인할 수 있습니다. 아래 코드를 test.py 파일로 저장해 실행해 보세요.

age = 20
price = 3.5
name = "홍길동"
is_student = True

print(type(age))
print(type(price))
print(type(name))
print(type(is_student))

실행하면 아래처럼 나옵니다.

<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>

<class ‘int’>는 이 값이 int, 즉 정수 타입이라는 뜻입니다. 나머지도 같은 방식으로 float은 실수, str은 글자, bool은 참과 거짓입니다. 참과 거짓은 True와 False처럼 첫 글자를 대문자로 써야 합니다.

타입을 구분하지 않으면 생기는 일

같은 + 기호도 타입에 따라 하는 일이 다릅니다. 숫자끼리는 더하고, 글자끼리는 이어 붙입니다. 아래 두 줄을 실행해 보세요.

print(10 + 20)
print("10" + "20")
30
1020

첫 줄은 숫자 10과 20을 더해 30이 나옵니다. 둘째 줄은 따옴표로 감싼 “10”과 “20”이 글자라서, 더하지 않고 이어 붙여 1020이 됩니다. 글자에 곱하기를 하면 반복합니다. print(“10” * 3)을 실행하면 101010이 나옵니다.

숫자와 글자를 섞어서 + 로 이으면 에러가 납니다.

print("나이: " + 20)

에러 화면의 맨 아래 줄에는 이렇게 나옵니다.

TypeError: can only concatenate str (not "int") to str

글자(str)와 숫자(int)를 + 로 이을 수 없다는 뜻입니다. 에러 화면을 읽는 순서는 에러가 났을 때 스택 트레이스를 읽고 원인을 찾는 방법 글에서 자세히 다뤘습니다.

타입을 바꾸는 방법

값의 타입을 다른 타입으로 바꾸는 것을 형변환이라고 합니다. 숫자로 바꿀 때는 int()나 float(), 글자로 바꿀 때는 str()을 씁니다.

print(int("20") + 5)
print(str(20) + "살")
print(int(3.9))
print(float(3))
25
20살
3
3.0

int(“20”)은 글자 “20”을 숫자 20으로 바꿔서 5를 더할 수 있게 합니다. str(20)은 반대로 숫자를 글자로 바꿔서 “살”과 이어 붙일 수 있게 합니다. int(3.9)는 반올림이 아니라 소수점 아래를 버려서 3이 되고, float(3)은 3.0이 됩니다.

앞에서 에러가 났던 코드도 이렇게 고칠 수 있습니다.

print("나이: " + str(20))
나이: 20

숫자로 바꿀 수 없는 글자를 int()에 넣으면 에러가 납니다.

print(int("abc"))
ValueError: invalid literal for int() with base 10: 'abc'

int()는 “20”처럼 숫자 모양의 글자만 바꿀 수 있습니다. “abc”는 숫자로 읽을 수 없어서 ValueError가 납니다.

처음 하는 분들이 자주 하는 실수

  • 따옴표를 붙이면 숫자도 글자가 됩니다. 20은 int이고 “20”은 str입니다. 화면에는 똑같이 20으로 보여도 계산 결과가 달라집니다.
  • input()으로 받은 값은 숫자를 입력해도 항상 글자(str)입니다. 계산하려면 int()로 바꿔야 합니다.
  • true나 false처럼 소문자로 쓰면 에러가 납니다. 참과 거짓은 True, False로 써야 합니다.
  • 0과 빈 글자는 False로, 그 밖의 값은 대부분 True로 취급됩니다. bool()로 확인할 수 있습니다.
print(bool(0), bool(""), bool("a"), bool(1))
False False True True

소수 계산에서 0.1 + 0.2가 0.3이 아니라 0.30000000000000004로 나오는 것도 타입과 관련된 주의점입니다. 정수와 실수의 차이는 따로 정리한 글에서 더 자세히 다룹니다.

마무리

오늘은 데이터 타입이 무엇인지, 파이썬의 기본 타입 네 가지와 형변환 방법을 알아봤습니다. 정수는 int, 소수점이 있는 숫자는 float, 글자는 str, 참과 거짓은 bool이고, 값의 타입은 type()으로 확인합니다. 타입을 바꿀 때는 int(), float(), str()을 씁니다.

계산이 이상하게 나오거나 TypeError가 날 때는 값에 따옴표가 붙어 있는지, 타입이 서로 맞는지부터 확인해 보세요. 연습 삼아 type()으로 여러 값의 타입을 직접 찍어 보면 훨씬 빨리 익힐 수 있습니다.

여백
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.