2.4 자료형
자료형이란 데이터 타입(data type)을 의미합니다. 먼저 프로그래밍과 무관한 예를 들어 보겠습니다.
‘1 + 1’ 결과는 무엇일까요? 바로 2라는 답이 나올 것입니다. 그렇다면 ‘안녕 + 1’은 뭐라고 할 수 있을까요? 넌센스인가 싶기도 하겠지만 1 + 1 문제처럼 간단히 답하기가 어렵습니다.
이런 문제를 보면 “문자랑 숫자를 어떻게 더하지?”라는 생각을 가장 먼저 할 것 같습니다. 맞습니다. 문자와 숫자는 서로 더할 수 없기에 덧셈(+) 연산이 되지 않습니다. 이는 현실 세계뿐만 아니라 프로그래밍 세계에서도 마찬가지입니다.
다음 코드처럼 var1 변수에는 숫자 1을 저장하고 var2 변수에는 "안녕"을 저장합니다. 그리고 이 둘을 더해 새로운 var3 변수에 저장하고 각 변수를 출력하는 코드를 작성해 보겠습니다.
var1 = 1
var2 = "안녕"
var3 = "안녕" + 1
print(var1)
print(var2)
print(var3)
이 코드를 실행해 보면 print(var3)에서 다음 에러가 발생합니다.
Traceback (most recent call last):
File "C:/Users/82103/PycharmProjects/SystemTrading/test.py", line 3, in <module>
var3 = "안녕" + 1
TypeError: can only concatenate str (not "int") to str
에러 마지막 줄을 살펴보면 ‘str에는 (int가 아니라) str만 연결(concatenate)할 수 있음(can only concatenate str (not "int") to str)’이라고 되어 있습니다. 이는 같은 자료형끼리만 연산 가능하고, 그렇지 않으면 연산이 불가능하다는 의미로, 이 코드에서는 숫자 1과 문자 “안녕”처럼 서로 다른 자료형끼리 연산했기 때문에 에러가 발생했습니다. 그러면 파이썬에서 사용할 수 있는 자료형들은 어떤 것들이 있는지 살펴보겠습니다.
먼저 파이참에 다음과 같이 코드를 입력해 보겠습니다.
var1 = 1
print(type(var1))
var2 = 1.0
print(type(var2))
var3 = 1 + 2j
print(type(var3))
var4 = 'Type?'
print(type(var4))
var5 = True
print(type(var5))
이 코드들처럼 변수를 type()이라는 내장 함수로 감싸면 이 변수가 어떤 타입인지 알려 줍니다(type()은 print()와 마찬가지로 파이썬에서 기본적으로 제공하는 함수이며, 이렇게 따로 만들지 않더라도 기본적으로 사용할 수 있는 함수들을 내장 함수(built-in function)라고 합니다).
이 코드를 실행하면 다음 결과가 나옵니다.
<class 'int'> ------ var1
<class 'float'> ------ var2
<class 'complex'> ------ var3
<class 'str'> ------ var4
<class 'bool'> ------ var5
하나씩 살펴보면 var1은 정수형(int), var2는 실수형(float), var3는 복소수(complex), var4는 문자형(str), 마지막으로 var5는 논리형(boolean)이라고 출력됩니다. 이외에도 여러 자료형이 있지만 우선은 이 정도만 알아보겠습니다.
“안녕”과 1의 덧셈(+) 연산이 되지 않았던 이유는 둘의 자료형이 각각 문자형(str)과 정수형(int)으로 서로 달랐기 때문입니다.
그렇다면 다음 코드는 어떻게 될까요?
var1 = 1
var2 = 1.0
var3 = 1 + 2j
print(var1 + var2 + var3)
실행 결과는 다음과 같습니다.
(3 + 2j)
정수, 실수, 복소수는 서로 다른 자료형이지만 숫자형(number)이라는 공통 속성 때문에 연산이 가능합니다.