파이썬/변수와 데이터 타입

처음 배우는 파이썬 데이터 타입 완전 정복 - 7종 기본 타입부터 가변 vs 불변, 형 변환, 비교/연산 주의사항까지

creator6556 2025. 11. 4. 06:58

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


728x90

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 데이터 타입


Python 데이터 타입뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기

프로그래밍 언어 정리 모음 

728x90