누구나 데이터 타입을 선언하고 활용할 수 있습니다. 하지만 서로 다른 데이터 타입 간의 변환이 어떻게 이루어지는지 생각해 본 적이 있으신가요? 이 글에서는 파이썬에 내장된 함수를 사용해 데이터 타입을 변환하는 방법, 즉 타입 캐스팅(Type Casting)에 대해 알아봅니다.
타입 캐스팅은 크게 두 가지로 나뉩니다. 바로 암시적(Implicit) 캐스팅과 명시적(Explicit) 캐스팅입니다. 암시적 캐스팅은 파이썬 인터프리터가 상황에 맞춰 자동으로 수행하는 변환이고, 명시적 캐스팅은 개발자가 내장 함수를 직접 호출하여 의도적으로 타입을 변환하는 것을 말합니다. 이번 글에서는 그중 명시적 타입 캐스팅만 집중적으로 다룹니다.
그럼 기본적인 타입 변환 함수들을 하나씩 살펴보겠습니다.
정수(int) 타입 변환
int() 함수는 임의의 데이터 타입을 정수형으로 변환할 때 사용합니다. 이 함수는 두 개의 매개변수를 받는데, 하나는 변환 대상 값(Number), 다른 하나는 진법(Base)입니다. 진법에는 2진수(2), 8진수(8), 16진수(16) 등을 지정할 수 있으며, 생략하면 기본값인 10진수로 해석됩니다.
실수(float) 타입 변환
float() 함수는 임의의 데이터 타입을 부동소수점 숫자로 변환합니다. 변환할 값을 나타내는 단 하나의 매개변수를 받습니다.
예제 코드
#타입 캐스팅
value = "0010110"
# 2진수(base 2)로 int 변환
p = int(value, 2)
print("2진수 기반 정수 : ", p)
# 기본 진법(10진수)
d = int(value)
print("기본 진법 정수 : ", d)
# float 변환
e = float(value)
print("대응되는 실수 : ", e)실행 결과
2진수 기반 정수 : 22 기본 진법 정수 : 10110 대응되는 실수 : 10110.0
위 코드에서는 문자열을 정수로 변환할 때 진법까지 함께 지정하는 방법도 확인할 수 있습니다. 같은 문자열이라도 진법을 2로 지정하면 22가 되고, 기본 진법으로 처리하면 10110이 되는 점에 주목하세요.
튜플(tuple) 타입 변환
tuple() 함수는 문자열이나 리스트를 튜플로 변환합니다. 단 하나의 매개변수를 받습니다.
리스트(list) 타입 변환
list() 함수는 임의의 데이터 타입을 리스트로 변환합니다. 역시 단 하나의 매개변수를 받습니다.
딕셔너리(dict) 타입 변환
dict() 함수는 (키, 값) 형태로 구성된 튜플이나 리스트를 딕셔너리로 변환합니다. 이때 키(key)는 반드시 고유해야 하며, 중복된 키가 존재하면 나중에 온 값이 이전 값을 덮어쓰게 됩니다.
예제 코드
#타입 캐스팅
str_inp = 'Tutorialspoint'
# 문자열 → 리스트 변환
j = list(str_inp)
print("문자열을 리스트로 : ")
print(j)
# 문자열 → 튜플 변환
i = tuple(str_inp)
print("문자열을 튜플로 : ")
print(i)
# 중첩 튜플
tup_inp = (('Tutorials', 0), ('Point', 1))
# 튜플 → 딕셔너리 변환
c = dict(tup_inp)
print("튜플을 딕셔너리로 : ", c)
# 중첩 리스트
list_inp = [['Tutorials', 0], ['Point', 1]]
# 리스트 → 딕셔너리 변환
d = dict(list_inp)
print("리스트를 딕셔너리로 : ", d)실행 결과
문자열을 리스트로 :
['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']
문자열을 튜플로 :
('T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't')
튜플을 딕셔너리로 : {'Tutorials': 0, 'Point': 1}
리스트를 딕셔너리로 : {'Tutorials': 0, 'Point': 1}문자열을 list()나 tuple()로 변환하면 각 문자가 개별 요소로 분리되는 것을 확인할 수 있습니다. 또한 (키, 값) 쌍을 담고 있는 중첩 시퀀스는 dict()를 통해 손쉽게 딕셔너리로 바꿀 수 있습니다.
문자열(str) 타입 변환
str() 함수는 정수나 실수를 문자열로 변환할 때 사용합니다. 단 하나의 인자를 받습니다.
ASCII 변환 함수 chr()와 ord()
chr() — 정수를 해당하는 문자로 변환합니다.
ord() — 문자를 해당하는 정수(ASCII 코드 값)로 변환합니다.
예제 코드
#타입 캐스팅
char_inp = 'T'
# 문자를 대응하는 정수 값으로 변환
print("대응하는 ASCII 값 : ", ord(char_inp))
int_inp = 92
# 정수를 대응하는 ASCII 문자로 변환
print("대응하는 ASCII 문자 : ", chr(int_inp))
# 정수와 실수 값
inp_i = 231
inp_f = 78.9
# 문자열 변환
print("문자열 변환 결과", str(inp_i))
print("문자열 변환 결과", str(inp_f))실행 결과
대응하는 ASCII 값 : 84 대응하는 ASCII 문자 : \ 문자열 변환 결과 231 문자열 변환 결과 78.9
마무리
지금까지 파이썬 3.x에서 사용할 수 있는 명시적 타입 캐스팅 방법을 살펴보았습니다. int(), float(), str(), list(), tuple(), dict(), chr(), ord() 같은 내장 함수만 익혀두면 데이터 타입 간 변환을 자유롭게 처리할 수 있습니다. 실전 프로젝트에서 입력값 검증, 데이터 전처리 등 다양한 상황에서 유용하게 활용되니 직접 코드를 작성하며 연습해 보시기 바랍니다.