Python - 객체 타입 변경하기(데이터타입 형변환), 객체 타입 확인하기(type함수)

type 함수

기본 개념

  • 객체의 타입(데이터 형식)을 반환하는 내장 함수
  • 특정 객체의 타입을 확인하기 위해 사용

사용법

  • type( var ) : 변수 var의 데이터 타입(문자,숫자)을 확인

type 함수 사용 예시


type 함수 사용 예시

# 숫자 타입 확인
num = 10
print(type(num))
# >>><class 'int'>

# 문자열 타입 확인
text = "Hello, World!"
print(type(text))
# >>> <class 'str'>

# 리스트 타입 확인
my_list = [1, 2, 3, 4, 5]
print(type(my_list))
# >>> <class 'list'>

# 튜플 타입 확인
my_tuple = (1, 2, 3, 4, 5)
print(type(my_tuple))
# >>><class 'tuple'>

# 딕셔너리 타입 확인
my_dict = {"name": "John", "age": 30}
print(type(my_dict))
# >>> <class 'dict'>

형변환 (Type Casting)

기본 개념

  • 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 과정을 의미
  • 암시적 형변환(Implicit Conversion)과 명시적 형변환(Explicit Conversion)으로 구분
  • type(int/str/float) ( var ) : 변수 var의 데이터 타입을 원하는 형태로 변경

형변환 예시 str -> int


형변환을 해야 하는 이유?

프로그렘에서 데이터를 처리하고 조작할 때, 잘못된 결과가 처리될 수 있음

 

케이스 1 : 원치 않는 값 출력

  • 저장된 값이 서로 데이터 타입이 일치하지 않으면 원하는 값이 나오지 않을 수 있음
    • 문자열끼리 더하면 문자열이 그대로 합쳐짐

3이 아닌 12출력


케이스 2 : 연산 오류

  • 데이터 타입이 서로 다르면 연산이 되지 않음

a1은 문자형, a2는 정수형. 데이터 타입이 다르면 에러가 출력


실수하기 쉬운 연산 처리, 정확한 연산을 하려면?

  • 사용자에게 입력받은 값은 문자열로 저장
  • 입력받은 값을 연산 시 숫자 연산이 아닌 문자열 합치기 수행
  • 형변환을 통해 정확한 연산 처리

가장 하기 쉬운 실수 예시. 데이터 타입에 주의하여 연산을 진행하여야 한다.


형변환 예시

암시적 형변환

  • 일부 연산이나 함수 호출 중에 자동으로 형변환 수행
  • 형변환을 따로 하지 않아도 자동으로 형변환이 이루어짐
# 암시적 형변환 예시1) 정수와 부동 소수점 연산
num_int = 10
num_float = 1.1
result = num_int + num_float
print(result)
# 정수와 부동 소수점 수를 더하면 부동 소수점 결과가 나옴
>>> # 11.1

# 암시적 형변환 예시2) 숫자와 불 값 연산
bool_val = True
result = bool_val + 10
print(result)
# 참 값과 숫자를 더하면 참(True)는 1로 해석 (1+10=11)
# >>> 11

# 암시적 형변환 예시3) 리스트와 튜플 연산
my_list = [1, 2, 3]
my_tuple = (4, 5, 6)
result = my_list + my_tuple
print(result)
# 리스트와 튜플을 더하면 새로운 리스트로 생성
# >>> [1, 2, 3, 4, 5, 6]

명시적 형변환

  • 명시적으로 데이터 타입을 변환하는 것
# 숫자를 문자열로 형변환
num = 10
str_num = str(num)

# 문자열을 정수로 형변환
str_num = "10"
num = int(str_num)

# 실수를 정수로 형변환
float_num = 3.14
int_num = int(float_num)

# 리스트를 튜플로 형변환
my_list = [1, 2, 3]
my_tuple = tuple(my_list)

# 불을 정수로 형변환
bool_val = True
int_val = int(bool_val)