프로그래밍을 하다 보면 서로 다른 데이터 유형 간의 변환이 필요한 경우가 자주 발생합니다. 파이썬에서는 유형을 변환할 때 해당 타입 이름을 함수처럼 호출하기만 하면 됩니다. 예를 들어 int("10")처럼 작성하면 문자열이 정수로 변환됩니다.
파이썬은 한 데이터 유형을 다른 유형으로 변환할 수 있는 다양한 내장 함수를 제공하며, 이러한 함수들은 변환된 값을 나타내는 새로운 객체를 반환합니다. 아래 표에서 주요 형 변환 함수와 그 설명을 확인해 보세요.
파이썬 주요 데이터 유형 변환 함수
| 번호 | 함수 및 설명 |
|---|---|
| 1 | int(x [,base]) x를 정수로 변환합니다. x가 문자열일 경우 base 매개변수로 진수(2진수, 8진수 등)를 지정할 수 있습니다. |
| 2 | long(x [,base]) x를 long 정수로 변환합니다. base는 x가 문자열일 때 진수를 지정합니다.(※ Python 2 전용 함수이며, Python 3에서는 int가 임의 정밀도 정수를 지원하므로 더 이상 필요하지 않습니다.) |
| 3 | float(x) x를 부동 소수점 숫자(float)로 변환합니다. |
| 4 | complex(real [,imag]) 복소수를 생성합니다. real은 실수부, imag는 허수부를 의미합니다. |
| 5 | str(x) 객체 x를 사람이 읽기 좋은 문자열 표현으로 변환합니다. |
| 6 | repr(x) 객체 x를 인터프리터가 해석 가능한 표현식 문자열로 변환합니다. |
| 7 | eval(str) 문자열을 파이썬 표현식으로 평가(evaluate)하고 그 결과 객체를 반환합니다. |
| 8 | tuple(s) s를 튜플(tuple)로 변환합니다. |
| 9 | list(s) s를 리스트(list)로 변환합니다. |
| 10 | set(s) s를 집합(set)으로 변환합니다. 중복 요소는 자동으로 제거됩니다. |
| 11 | dict(d) 딕셔너리(dictionary)를 생성합니다. d는 반드시 (키, 값) 형태의 튜플 시퀀스여야 합니다. |
| 12 | frozenset(s) s를 변경 불가능한 집합(frozenset)으로 변환합니다. |
| 13 | chr(x) 정수를 해당하는 문자로 변환합니다. |
| 14 | unichr(x) 정수를 유니코드 문자로 변환합니다.(※ Python 2 전용 함수이며, Python 3에서는 chr()이 유니코드 문자를 처리합니다.) |
| 15 | ord(x) 단일 문자를 그에 대응하는 정수 값(유니코드 코드 포인트)으로 변환합니다. |
| 16 | hex(x) 정수를 16진수(hexadecimal) 문자열로 변환합니다. |
| 17 | oct(x) 정수를 8진수(octal) 문자열로 변환합니다. |
형 변환 함수 활용 예시
실제 코드에서 이러한 함수들이 어떻게 동작하는지 몇 가지 예시를 살펴보겠습니다.
# 문자열을 숫자로 변환
num = int("100") # 결과: 100
pi = float("3.14") # 결과: 3.14
# 2진수 문자열을 정수로 변환
binary = int("1010", 2) # 결과: 10
# 숫자를 문자열로 변환
text = str(12345) # 결과: "12345"
# 문자와 정수 간 변환
char = chr(65) # 결과: 'A'
code = ord('A') # 결과: 65
# 진수 변환
hex_val = hex(255) # 결과: '0xff'
oct_val = oct(8) # 결과: '0o10'암묵적 변환과 명시적 변환
파이썬의 형 변환은 크게 두 가지로 나뉩니다. 개발자가 직접 위의 함수를 호출하는 명시적 변환(explicit conversion)과, 파이썬 인터프리터가 자동으로 수행하는 암묵적 변환(implicit conversion)입니다. 예를 들어 정수와 실수를 더하면 파이썬이 자동으로 정수를 실수로 변환하여 연산합니다.
result = 5 + 2.0 # 암묵적으로 5가 5.0으로 변환되어 7.0 반환다만 호환되지 않는 유형끼리 변환을 시도하면 ValueError나 TypeError가 발생할 수 있으므로, 변환 전에 데이터의 유효성을 검사하는 것이 안전합니다.