CodeGym /자바 코스 /Python SELF KO /데이터 타입 변환

데이터 타입 변환

Python SELF KO
레벨 5 , 레슨 2
사용 가능

2.1 타입 정의

가끔 코드의 특정 부분에서는 변수가 어떤 데이터를 담고 있는지 모를 때가 있어. 이럴 때 Python에서는 객체의 타입을 알아내기 위해 함수 type()를 사용할 수 있어.

이건 내장 함수로, 지정된 객체의 타입을 반환해주지. 디버깅, 데이터 유효성 검사, 또는 데이터 타입에 따라 변화하는 로직 구현 시에 유용하게 쓸 수 있어.

type() 함수의 작동 원리

type(x)를 호출하면, Python은 변수 x의 타입을 나타내는 특별한 type 객체를 반환해. 예를 들어:


x = 1
print(type(x))  # 출력: <class 'int'>

x = "안녕"
print(type(x))  # 출력: <class 'str'>

x = [1, 2, 3]
print(type(x))  # 출력: <class 'list'>

출력에 class라는 단어가 보일 거야. 이는 int, str, list 같은 타입도 사실은 클래스라는 걸 의미해. 너가 별도로 선언할 필요 없는, Python에 기본적으로 내장된 클래스들이지.

실제 적용

type() 함수는 데이터 타입에 따라 작업을 구분해야할 때 자주 사용돼.

  • 변수의 타입에 따라 다른 행동을 취할 수 있어.
  • 함수나 메서드 내에서 인자의 타입의 정확성을 확신하기 위해.

만약 변수에 숫자가 들어있는지 확인하고 싶으면, 아래와 같은 코드를 작성하면 돼:


arg = 123
if type(arg) == int:
    print(arg + 10)  # 출력: 133               

변수에 저장된 객체 타입을 확인하는 실용적인 예는 아래와 같아:


arg = "123"
if type(arg) == int:
    print(arg + 10)  # 이건 실행되지 않아. arg는 문자열이니까.
elif type(arg) == str:
    print(arg + " world")  # 출력: 123 world
else:
    print("알 수 없는 타입")               

2.2 명시적 타입 지정

Python에서는 int(), float(), str(), tuple() 같은 타입 변환 함수를 통해 객체의 타입을 명시적으로 지정할 수 있어. 이런 함수들은 특정 타입을 지정하고 한 타입에서 다른 타입으로 데이터를 변환하는데 편리해. 특히 사용자 입력 처리, 수학적 연산 수행 또는 문자열 및 데이터 컬렉션 작업 시 유용해.

타입 변환 함수 예제

int(): 데이터를 정수로 변환해. 이 함수는 이미 여러 번 봤겠지만, 문자열 속 숫자를 전달하면 int()가 이를 해당 정수로 변환해.


num = int("123")  # num은 정수 123이 돼

float(): 또 하나의 익숙한 함수야. 데이터를 실수로 변환해.


num = float("123.45")  # num은 123.45가 돼

str(): 어떤 Python 객체라도 문자열로 변환해줘.


s = str(10.5)  # s는 '10.5'가 돼

tuple(): 시퀀스를 튜플로 변환해.


t = tuple([1, 2, 3])  # t는 (1, 2, 3)이 돼

list(): 이터러블 객체(문자열이나 튜플 같은)를 리스트로 변환해. 이터러블 객체는 순차적으로 순회할 수 있는 객체들을 말해, 예를 들어 문자열, 리스트, 튜플 등이야.


l = list("abc")  # l은 ['a', 'b', 'c']가 돼

dict(): 키-값 쌍의 시퀀스로부터 사전을 생성해.


d = dict([(1, 'a'), (2, 'b')])  # d는 {1: 'a', 2: 'b'}가 돼

사전과 튜플에 대해서는 조금 있다가 더 이야기할 테니 너무 걱정하지 마. 큰 그림을 잡으면 돼: 만약 너가 명시적으로 어떤 타입을 지정해야 한다면, 위에 적힌 함수들을 사용할 수 있어.

2.3 타입 변환

Python에서는 명시적 타입 변환(또는 타입 캐스팅)을 통해 개발자가 변수의 데이터 타입을 제어하고 변경할 수 있어. 이는 다양한 작업에서 데이터의 호환성을 보장하거나, 사용자 입력이나 파일을 읽을 때 받은 데이터의 타입을 수정하는 데 유용해. 사실, 타입 변환과 타입 캐스팅은 데이터 객체의 타입을 다른 타입으로 변경하는 과정을 말하는데, 둘 다 동일한 의미를 갖고 있어.

명시적 타입 변환은 이전에 조금 다뤄봤어. Python에서는 내장 함수인 int(), float(), str(), tuple(), list(), dict(), set() 등을 통해 사용할 수 있어.

몇 가지 추가 예제를 통해 더 알아보자:

함수 설명 입력 예시 출력 예시
int() 정수로 변환 int("10") 10
float() 실수로 변환 float("20.5") 20.5
str() 문자열로 변환 str(15) "15"
tuple() 튜플로 변환 tuple([1, 2, 3]) (1, 2, 3)
list() 리스트로 변환 list("abc") ['a', 'b', 'c']
dict() 키-값 쌍으로 사전 생성 dict([(1, 'one'), (2, 'two')]) {1: 'one', 2: 'two'}
set() 리스트로부터 집합 생성 set([1, 1, 2, 2, 3, 3]) {1, 2, 3}

사용 예시

명시적 타입 변환은 여러 시나리오에서 사용돼, 예를 들어:

  • 사용자 입력 처리: 입력된 데이터가 예상하는 데이터 타입과 일치하도록 보장해.
  • 데이터 상호운용성: 서로 다른 소스나 API에서 받은 데이터를 결합하거나 비교할 때 사용해.
  • 오류 처리: 연산을 수행하기 전에 데이터를 적절한 타입으로 변환함으로써 런타임 오류를 방지할 수 있어.

최고의 실천 방법과 주의사항

명시적 타입 변환은 데이터 손실(예: floatint로 변환할 때)이나 타입 변환 오류(예: 숫자가 아닌 문자열을 숫자로 변환하려 할 때)를 피하기 위해 신중하게 사용해야 해.

또한 어떤 변환은 직관적이지 않을 수 있고 예상치 못한 결과를 초래할 수 있다는 점도 상기해야 해. 예를 들어 intbool로 변환한 후 다시 int로 변환하는 과정에서는 예상치 못한 효과가 나타날 수 있어 :)

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION