1 왜 데이터 타입(Data Type)이 중요한가?
→ 파이썬에서 다루는 모든 값(숫자, 글자, 참/거짓 등)은 각기 다른 성질과 행동 방식을 가짐
→ 이런 성질을 구분하기 위한 기준이 바로 데이터 타입임
→ 즉, 타입은 '이 값은 어떤 종류인가?', '이 값으로 어떤 연산이 가능한가?'를 알려주는 규칙표임
→ 한마디로 요약하면 데이터 타입은 값의 '성격표'이자 '사용설명서'임
2 타입의 개념과 원리
1) 타입은 '값에 붙는다'
→ 파이썬은 동적 타입 언어라서, 변수에 타입을 미리 정하지 않아도, 값이 들어올 때 자동으로 타입이 결정됨
→ 변수는 단지 이름표일 뿐이며, 실제 타입은 값이 가짐
1-1 코드
data = 10
print(type(data)) # <class 'int'>
data = 'Python'
print(type(data)) # <class 'str'>
1-1 결과

2) 모든 값은 객체(Object)
→ 파이썬의 모든 것은 객체임
→ 각 값은 자신이 어떤 클래스에서 만들어졌는지를 알고 있으며, type()으로 확인할 수 있음
1-2 코드
print(type(10)) # <class 'int'>
print(type('Hello')) # <class 'str'>
1-2 결과

3 파이썬 기본 데이터 타입 7종
| 분류 | 타입명 | 설명 |
| 숫자형 | int, float, complex | 계산 가능한 수 |
| 문자열형 | str | 문자, 단어, 문장 표현 |
| 불리언형 | bool | 참/거짓 표현 |
| 시퀀스형 | list, tuple, range | 순서 있는 데이터 |
| 집합형 | set | 중복 없는 데이터 |
| 매핑형 | dict | 키-값 쌍 데이터 |
| None형 | NoneType | 값이 없음 표시 |
→ 단일값은 int, float, str, bool, None
→ 여러값은 list, tuple, range, set, dict
4 불변(Immutable) vs 가변(Mutable)
→ 불변형은 수정이 불가능하며, int, float, str, tuple, bool, None이 있음
→ 가변형은 내부 수정이 가능하며, list, dict, set이 있음
2-1-1 코드 : 불변형 예시
a = 10
b = a
a = 20
print(a, b) # 20, 10
2-1-1 결과

2-1-2 코드 : 가변형 예시
a = [1,2,3]
b = a
a.append(4)
print(b) # [1,2,3,4]
2-1-2 결과

2-1-3 코드 : 가변형을 완전 복사(deepcopy())
import copy
a = [[1,2],[3,4]]
b = copy.deepcopy(a)
b[0][0] = 99
print(a, b)
2-1-3 결과

5 형 변환(Type Conversion)
1) 묵시적 변환 (자동)
→ 파이썬이 자동으로 타입을 맞추는 경우
→ 주로 숫자형 간 연산에서 나옴
3-1 코드
print(10 + 3.5) # 13.5 (int → float)
3-1 결과

2) 명시적 변환 (수동)
→ 직접 변환 함수를 사용함
→ int()는 정수형으로 변환함
→ float()은 실수형으로 변환함
→ str()은 문자열로 변환함
→ bool()은 참/거짓으로 변환함
→ list(), tuple(), set()은 컬렉션으로 변환함
3) 변환 시 주의
→ 소수점이 있는 문자열은 int()로 변환할 수 없음
→ 컬렉션을 정수형이나 숫자형 같은 걸로 변환할 수 없음
→ 안전하게 하려면 try-except 또는 .isdigit()을 사용하기
6 타입 간 비교 & 연산 주의점
1) 비교 연산자 기본
→ ==은 값이 같은가를 의미함
→ !=은 값이 다른가를 의미함
→ >, <, >=, <=은 값의 크기를 비교함
→ is / is not은 같은 객체인가를 의미함
→ in / not in은 포함 여부를 확인함
2) 타입별 비교 원칙
→ 숫자형은 int와 float 간의 비교는 가능하고, complex는 ==, !=만 가능함
→ 문자열은 사전식(유니코드) 순서이며, 대소문자를 구분함
→ 리스트/튜플은 앞에서부터 순서대로 비교함
→ 집합은 부분집합과 상위집합 비교가 가능함
→ 딕셔너리는 ==, !=만 가능함
3) 값 비교 vs 객체 비교
3-2 코드
a = [1,2]
b = [1,2]
c = a
print(a == b) # True (값)
print(a is b) # False (객체)
print(a is c) # True
3-2 결과

4) 논리 연산자
3-3 코드
x = 10
print(5 < x < 15) # True (체인 비교)
print(x > 5 and x < 15) # True (동일 의미)
print(0 or 10) # 10
print(not 'Hello') # False
3-3 결과

5) 포함 비교
3-4 코드
print('ap' in 'apple') # True
print(3 in [1,2,3]) # True
print('name' in {'name': 'Tom'}) # True (키 기준)
3-4 결과

7 초보자가 자주 하는 실수 & 주의사항
→ 문자열과 숫자를 같이 사용하면 타입이 불일치하므로, str()이나 ,나 f-string을 사용하기
→ input()은 str을 반환하므로 계산에 오류가 발생하므로, int()나 float()으로 변환하기
→ 문자열은 불변형이라서 수정이 불가능하므로, 새 문자열을 생성하기
→ 리스트 복사에서 같은 객체를 가리켜 참조 문제가 발생하므로, copy() 또는 deepcopy()를 사용하기
→ None, 0, False는 의미가 다르므로, is None으로 비교하기
→ type()은 상속 관계를 무시하므로, isinstance()를 권장함
→ 딕셔너리 없는 키에 접근하면 KeyError가 발생하므로, get()을 사용하기
→ set() 원소에 list는 추가할 수 없으므로, tuple로 대체하기
→ 빈 값은 False이고, 공백(' ')은 True임
→ 불변형 재할당은 새 객체를 생성하므로 id()로 확인하기
→ 형 변환 예외 처리를 누락하면 ValueError가 발생하므로, try-except로 감싸기
Python 데이터 타입에 대해 더 상세한 설명을 원하는 분들은 아래 사이트에 접속하기
Python 데이터 타입뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기
'파이썬 > 변수와 데이터 타입' 카테고리의 다른 글
| 파이썬 None 완벽 정리 - None vs 빈 값 차이, is 비교, 함수 반환까지 한 번에 끝내기 (0) | 2025.12.04 |
|---|---|
| 파이썬 Boolean, 조건문 완전 정리 - True/False, 비교/논리 연산, in, None, 단축 평가까지 한 번에 이해하기 (0) | 2025.11.30 |
| 파이썬 문자열 완전정복 : split, join, replace, 정규표현식, 한글 깨짐, 디버깅까지 이것만 보면 끝! (0) | 2025.11.27 |
| 파이썬 형변환 완벽 가이드 : 타입 확인, 숫자 변환, 예외 처리, 자주 하는 실수까지 한 번에 정리 (0) | 2025.11.19 |
| 파이썬 변수 완전정복 : 선언부터 재할당, 삭제, 실수까지 초보 100% 이해 (0) | 2025.10.29 |