본문 바로가기
개발/python

python 타입 비교 및 확인, type 함수 대신 isinstance 함수 사용법

by 왼하루 2022. 4. 1.
반응형

파이썬에서 어떠한 변수의 타입을 확인하기 위해서 보통 type 함수를 많이 사용합니다. 이 type 함수를 사용하면 조건문에서 내가 원하는 타입이 맞는지 확인하기 위해 불필요한 코드를 사용해야 하는 경우가 있습니다. 이러한 경우를 대처하기 해서 isinstance 함수 사용법을 알아보도록 하겠습니다.

 

파이썬 isinstance 함수 사용

기존 type 함수와 isinstance 함수를 비교하고 왜 비교문에서 isinstance가 좋은지 확인해보겠습니다.

  • type 함수 사용
  • isinstance 함수 사용
  • isinstance 를 사용하여 한번에 여러타입 비교하기

 

 

 

type 함수 사용

파이썬은 변수를 선언할 때 별도로 변수 타입을 지정해주지 않아도 되기 때문에, 코딩을 하다보면 사용하는 함수의 리턴 값을 예상할 수 없을 때 type 함수를 사용하는 경우가 많습니다. 말 그대로 지금 값의 타입이 무엇인지 궁금할 때 사용합니다.

 

type 함수 사용법은 다음과 같습니다. type 함수에 파라미터로 변수명을 적어주면 됩니다.

 

int_val = 1
# type(변수명)
print(type(int_val))

 

결과는 class 'int' 로 반환됩니다.

 

현재 값의 타입을 확인하기 위해서는 편리한 함수이나, 지금 값이 어떤 특정한 타입인지를 조건문으로 확인할 때는 코드가 요상해집니다.

 

int_type = 0
_val = 1

if type(_val) == type(int_type):
	print("It is same type!")

 

위 코드를 예로 들면, 어떠한 변수가 int 타입인지 확인하기 위해 int_type=0 으로 int인 변수를 선언합니다. 이후 비교할 변수가 int 인지 확인하기 위해 타입을 알수 없는 변수 _val 에 type함수를 사용하여 리턴되는 값과 실제 int 변수로 정의된 int_type에 type 함수를 사용하여 리턴되는 값을 비교하는 코드로 선언해야 합니다. 이렇게 사용해도 문제가 되지 않지만, 모든 타입의 비교를 위해 타입별로 비교를 위한 변수를 선언해 두기에는 불필요한 코드 삽입이 필요할 수 있습니다.

 

_str = ""
_int = 1
_float = 0.1
_list = []
_dict = {}
# ... no.. don`t do that

 

 

 

isinstance 함수 사용

isinstance 함수 사용 방법은 아래와 같습니다.

 

# isinstance(값, 타입명)
result1 = isinstance(1, int)
result2 = isinstance(0.1, float)
result3 = isinstance("hi", str)
result4 = isinstance([1,2,3], list)
result5 = isinstance({"name":"mario"}, dict)

# 모두 True
print(result1, result2, result3, result4, result5)

 

위 코드와 같이 isinstance(값, 타입명) 으로 함수를 호출하여 일치할 경우 True, 불일치할 경우 False 로 리턴됩니다. type을 사용했을 때의 코드와 비교하면 아래와 같습니다.

 

 

_val = 1

if isinstance(_val, int):
	print("It is int type.")

 

별도로 타입비교를 위한 변수를 선언할 필요없이 값 자체가 어떤 타입인지 확인할 수 있습니다.

 

 

 

isinstance 를 사용하여 한번에 여러타입 비교하기

추가적으로 isinstance는 여러 타입 중 일치하는게 있는지를 확인 할 수 있습니다. 튜플 형식으로 타입명을 넣어주면 됩니다.

 

# 괄호에 확인할 타입명 입력
result = isinstance("hi", (int, float, str))
print(result)

 

이 경우 "hi" 라는 값이 int, float, str 중 하나의 타입과 일치한다면 True를 리턴합니다. 

 

 

 

마무리

파이썬에서 전달되는 값의 타입이 뭔지 확인하기 위해 type 함수를 많이 씁니다. 그러나 비교문을 사용할 때 ininstance 함수를 사용하면 좀더 직관적으로 코드 해석이 가능한 장점이 있습니다. 본인의 스타일에 따라 적절히 섞어가며 사용해주면 좋을 것 같네요.

 

오늘도 즐거운 코딩생활 되시기 바라겠습니다. 감사합니다.

 

 

 

 

 

댓글