Menu

파이썬 자료형: int, float, str, bool, list, dict 등등

파이썬 내장 자료형 한 바퀴 — 숫자, 문자열, 불리언, None, 리스트, 튜플, 집합, 딕셔너리를 예제와 함께 살펴보고, 각각을 언제 꺼내 쓰는지까지.

타입이 왜 중요한가요

_타입_은 파이썬에게 어떤 값이 어떻게 동작해야 하는지를 알려주는 분류 정도예요. 정수 둘을 더한다는 건 산술 연산이고, 문자열 둘을 더한다는 건 이어붙인다는 뜻이고, 문자열과 정수를 더하려고 하면 에러가 나죠. 값의 타입이 그 값에 어떤 연산이 말이 되는지를 결정합니다.

파이썬에는 작고 친근한 내장 타입 세트가 있어요. 그중 네 개 — int, float, str, bool — 는 여러분이 앞으로 쓸 거의 모든 프로그램에서 등장할 겁니다. 나머지는 데이터를 컬렉션으로 묶기 시작할 때 등장하고요.

숫자: int와 float

숫자는 두 종류인데, 파이썬이 _어떻게 썼는지_를 보고 알아서 골라줍니다:

main.py
Output
Click Run to see the output here.

소수점이 없으면 int, 있으면 float입니다. 산술 연산에서는 둘을 자유롭게 섞을 수 있어요 — float이 한 번이라도 끼면 결과는 float이 됩니다:

main.py
Output
Click Run to see the output here.

파이썬의 정수는 메모리가 허락하는 만큼 커질 수 있어요 — 오버플로우도 없고, 32비트나 64비트 같은 고정된 한계도 없어요. 2 ** 1000을 계산해 봐도 파이썬은 자릿수를 전부 돌려줍니다.

float은 일반적인 IEEE 754 규칙을 따르기 때문에, 몇 가지 전통적인 함정이 있어요:

main.py
Output
Click Run to see the output here.

이건 0.3이 아니라 0.30000000000000004를 출력합니다. 파이썬 버그가 아니에요 — 어느 언어에서든 이진 부동소수점이 그렇게 동작해요. 정확한 소수가 필요하다면 (예: 금액), decimal 모듈을 쓰세요. 그 외에는 출력할 때 반올림하는 정도로 대부분 충분합니다.

문자열: str

문자열은 문자들의 연속이에요. 작은따옴표나 큰따옴표로 감싸면 됩니다 — 여는 따옴표와 닫는 따옴표만 맞으면 파이썬은 어느 쪽이든 상관하지 않아요:

main.py
Output
Click Run to see the output here.

삼중 따옴표 문자열(""" ... """)은 여러 줄에 걸칠 수 있어요:

main.py
Output
Click Run to see the output here.

문자열은 시간이 지나면서 익히게 될 방대한 API를 갖고 있어요 — 슬라이싱, .upper() · .split() · .replace() 같은 메서드, 그리고 f"Hello, {name}"을 가능하게 해주는 f-string 포매팅까지. 문자열은 바로 다음 페이지에서 따로 다룹니다.

불리언: bool

값은 두 개뿐이고, 쓰여 있는 그대로 써야 해요 — TrueFalse, 첫 글자가 대문자예요. 비교 연산의 결과는 불리언이 됩니다:

main.py
Output
Click Run to see the output here.

내부적으로 TrueFalse는 각각 10이기 때문에, 얼마나 많은 조건이 참이었는지 세고 싶을 때는 불리언을 그냥 더해도 됩니다:

main.py
Output
Click Run to see the output here.

None: 값의 부재

None은 파이썬이 "값 없음"을 표현하는 방식이에요. 명시적으로 뭔가를 반환하지 않는 함수는 None을 반환합니다. 자리 표시자로도 자주 써요:

main.py
Output
Click Run to see the output here.

관례적으로 == None이 아니라 is None, is not None으로 비교합니다. is는 객체 동일성을 검사하는데, 여기서 여러분이 정말 원하는 게 그거예요.

리스트, 튜플, 집합, 딕셔너리

내장 컬렉션 타입 네 가지예요. 각각 자기 페이지에서 자세히 다루겠지만, 여기선 한눈에 알아볼 수 있도록 맛보기만:

main.py
Output
Click Run to see the output here.

대략의 기준:

  • 리스트(list): 바뀔 걸로 예상되는 시퀀스. 추가, 삭제, 정렬 모두 자유롭게요.
  • 튜플(tuple): 바뀌지 않게 지키고 싶은 시퀀스. (x, y) 좌표처럼 모양이 고정된 레코드에 자주 써요.
  • 집합(set): 중복이 버그가 될 상황에서 쓰는 유일 값 모음.
  • 딕셔너리(dict): 키로 찾아 들어가는 자료구조. JSON 모양의 구조예요.

타입 간 변환

파이썬은 위험할 수 있는 타입 변환을 자동으로 해주지 않아요. 정수를 문자열로, 문자열을 숫자로 바꾸는 건 여러분이 직접 요청해야 합니다:

main.py
Output
Click Run to see the output here.

말이 안 되는 변환 — 예를 들어 int("hello") — 을 시도하면, 파이썬은 ValueError를 발생시키고 뭘 넘겨받았는지 알려줍니다. 에러, 설명, 수정, 다음으로.

타입 확인하기

알아둘 만한 도구 두 가지:

main.py
Output
Click Run to see the output here.

type()은 REPL에서 잠깐 확인할 때 좋아요. 실제 코드에서는 isinstance()를 쓰는데, 상속과도 잘 어울리고 여러 타입을 한 번에 검사할 수 있기 때문이에요.

한눈에 훑어보는 연습

아래 블록을 그대로 한 번 돌려 보고, 그 다음 값 몇 개를 바꿔보면서 타입이 어떻게 달라지는지 확인해 보세요:

main.py
Output
Click Run to see the output here.

for를 아직 몰라도 괜찮아요 — 뒤에서 다룰 거예요 — 그래도 내장 타입들을 한눈에 감 잡는 데 도움이 됩니다.

데이터에 맞는 타입을 고르세요

지금 모든 타입을 외울 필요는 없어요. 대신 눈에 보였을 때 알아볼 수 있어야 하고, 직접 데이터를 만들 때 맞는 타입을 고를 수 있어야 해요. "이건 고정된 건가, 바뀌는 건가? 유일해야 하나 아닌가? 키로 찾을 건가 위치로 찾을 건가?" — 이 네 가지 질문이면 컬렉션 타입은 열에 아홉은 골라집니다.

다음은 문자열을 더 깊이 파고듭니다. 거의 모든 프로그램에서 건드리게 되는, 단 하나의 자료형이니까요.

자주 묻는 질문

파이썬의 주요 자료형은 뭐가 있나요?

숫자(int와 float), 문자열(str), 불리언(bool), None, 그리고 네 개의 컬렉션 타입 — list, tuple, set, dict 입니다. 파이썬 코드에서 보이는 나머지 모든 건 이것들과 몇몇 추가 타입(bytes, complex, frozenset)을 조합해서 만들어져요.

값의 자료형은 어떻게 확인하나요?

type()으로 감싸면 돼요. type(42)<class 'int'>, type('hi')<class 'str'>을 돌려줍니다. 참/거짓으로 판단하려면 isinstance(value, int)를 쓰세요 — 서브클래스까지 잡아줘서 더 유연합니다.

파이썬은 정적 타입이에요, 동적 타입이에요?

동적 타입(dynamically typed) 이에요. 변수는 어떤 타입의 값이든 가리킬 수 있고, 같은 변수가 살아 있는 동안 타입이 바뀔 수도 있어요. 변수 타입을 한 번 선언하면 바꿀 수 없는 Java나 C++와는 다른 지점이에요.

Coddy로 코딩 배우기

시작하기