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)이라는 공통 속성 때문에 연산이 가능합니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.