파이썬 type() 함수는 객체의 자료형을 확인할 수 있는 매우 유용한 함수입니다. 개발자는 이를 통해 변수나 객체가 어떤 자료형인지 쉽게 파악할 수 있으며, 이를 활용해 다양한 조건 처리 및 디버깅 작업을 수행할 수 있습니다. 이 글에서는 type()
함수의 기본적인 사용법부터 다양한 활용 방법까지 살펴보겠습니다.
목차
파이썬 type()
함수의 기본 개념
type()
함수는 파이썬의 내장 함수 중 하나로, 인수로 전달된 객체의 자료형을 반환합니다.
num = 23
print(type(num))
위 코드에서 변수명
에 할당된 값은 23이며, 이는 정수형(integer)입니다. 따라서 type(변수명)
은 다음과 같이 “<class ‘int’>”를 출력하게 됩니다.
type()은 다음과 같이 Built-in Type을 알 수 있게 해 줍니다.
- int: 정수형 데이터
- float: 실수형 데이터
- str: 문자열 데이터
- list: 리스트 데이터
- tuple: 튜플 데이터
- dict: 딕셔너리 데이터
뿐만 아니라 type()
함수는 객체의 자료형을 명확하게 알려주는 도구로, 파이썬을 배우는 초보자나 코드를 디버깅할 때 매우 유용합니다.
변수 자료형 확인하기
파이썬은 변수 선언 시 자료형을 명시하지 않아도 됩니다. 그러나 때때로 변수의 자료형을 확인해야 할 때가 있습니다. 특히 여러 가지 자료형을 동시에 사용할 때 type()
함수를 통해 자료형을 확인하는 것이 좋습니다.
a = 4096
b = 40.96
c = "4096MB"
d = [1024, 2048, 4096]
print(type(a))
print(type(b))
print(type(c))
print(type(d))
위 예시에서 각각의 변수는 서로 다른 자료형을 가지고 있습니다. 아래 그림과 같이 type()
을 사용하여 각 변수의 자료형을 확인할 수 있습니다.
type()
과 조건문 활용하기
type()
함수는 조건문과 함께 사용할 때 특히 강력합니다. 자료형에 따라 다른 동작을 수행해야 할 경우, type()
을 활용하여 효율적으로 코드를 작성할 수 있습니다.
data = [4096, "4096MB", 40.96]
for item in data:
if type(item) == int:
print(f"{item} is integer.")
elif type(item) == float:
print(f"{item} is float.")
elif type(item) == str:
print(f"{item} is string.")
이 코드는 리스트에 있는 데이터를 하나씩 확인한 후, 해당 데이터의 자료형에 맞춰 메시지를 출력합니다. type()
을 통해 각 데이터가 어떤 자료형인지 판단하여 조건을 분기 처리한 결과는 다음과 같습니다.
동적 클래스 생성
type()
함수는 단순히 객체의 자료형을 반환하는 것 외에도 매우 특별한 기능이 있습니다. 바로 동적으로 클래스를 생성할 수 있다는 점입니다. 이 기능은 주로 런타임에 새로운 클래스를 만들고자 할 때 유용합니다.
MyClass = type('MyClass', (object,), {'size': 4096})
obj = MyClass()
print(obj.size)
type(obj)
위 코드는 type()
을 사용하여 MyClass
라는 이름의 클래스를 동적으로 생성한 것입니다. 클래스의 이름, 상속받을 부모 클래스, 클래스 속성 등을 인수로 전달하여 클래스를 즉시 만들 수 있습니다. 그리고 라인 5에서는 Built-in Type이 아닌 클래스 MyClass에 대해서도 확인이 가능합니다.
주의사항
type()
함수는 매우 유용하지만, 자료형을 직접 비교할 때는 isinstance()
함수와 함께 사용하는 것이 더 적절할 때도 있습니다. type()
은 정확한 자료형만을 확인하지만, isinstance()
는 상속 관계도 고려하여 자료형을 판단하기 때문입니다.
a = 4096
print(type(a) == int)
print(isinstance(a, int))
class Animal:
pass
class Dog(Animal):
pass
d = Dog()
print(type(d) == Animal)
print(isinstance(d, Animal))
아래 그림에서 볼 수 있듯이, isinstance()
는 객체가 부모 클래스의 인스턴스인지도 확인할 수 있습니다. 상속 관계를 고려한 자료형 확인이 필요하다면 type()
보다는 isinstance()
를 사용하는 것이 좋습니다.
정리
type()
함수는 파이썬에서 매우 강력한 도구로, 객체의 자료형을 확인하거나 동적으로 클래스를 생성하는 등 다양한 방식으로 활용할 수 있습니다. 특히 여러 자료형을 다룰 때, 자료형에 맞춘 조건 처리가 필요할 때 매우 유용합니다. 특히, 상속 관계를 고려해야 하는 경우에는 type()
보다는 isinstance()
를 사용하는 것이 더 적절합니다. 하지만, 해당 클래스임을 명확하게 확인해야 하는 경우에는 type()을 사용해서 명확하게 확인하는 편이 확실합니다.