기술블로그-Fastapi편

✅ isinstance() 함수 완전 정복

Chansman 2025. 5. 23. 16:06

✅ isinstance() 함수 완전 정복

isinstance()는 Python에서 아주 자주 쓰이는 자료형 검사 함수야.
쉽게 말하면:

어떤 값이 특정 타입인지 확인하는 함수야.


🔧 기본 형식

isinstance(값, 타입)
  • 첫 번째 인자: 검사할
  • 두 번째 인자: 검사할 타입 또는 타입들의 튜플

🧪 사용 예제

print(isinstance("hello", str))   # ✅ True
print(isinstance(123, int))       # ✅ True
print(isinstance(123, str))       # ❌ False

🔄 여러 타입 동시에 검사할 수도 있어

print(isinstance(3.14, (int, float)))  # ✅ True

튜플로 여러 타입을 넘기면 그 중 하나라도 맞으면 True를 반환해.


⚠️ 자주 하는 실수

print(isinstance())  # ❌ TypeError 발생

isinstance()는 반드시 두 개의 인자가 필요해!
항상 (값, 타입) 구조를 따라야 해.


🎯 언제 사용하는가?

상황 사용 예

타입 검사 및 분기 처리 if isinstance(x, str):
타입 안전한 접근 전 확인 if isinstance(data, dict): data.get("key")
사용자 입력 검증 if not isinstance(age, int): raise TypeError()

💡 실무 팁

  • type()과 비슷하지만 isinstance()는 상속 관계까지 고려함 → 더 정확함
  • mypy와 함께 쓰면 정적 분석 + 런타임 안정성 확보 가능

😮 False는 int일까? — 놀라운 사실!

print(isinstance(False, int))  # ✅ True

🔍 왜 True일까?

>>> issubclass(bool, int)
True
  • Python에서는 bool이 int의 서브클래스로 구현되어 있음.
  • 그래서 True, False는 내부적으로 1, 0처럼 작동해.
int(True)   # 1
int(False)  # 0

True + 3    # 4
False * 10  # 0

✅ 요약 정리

표현 결과 이유

isinstance(False, int) ✅ True bool은 int의 하위 클래스
issubclass(bool, int) ✅ True 실제로 상속 구조가 있음
int(True) 1 True는 1처럼 작동
int(False) 0 False는 0처럼 작동

🔚 마무리 요약

  • isinstance()는 값의 타입을 안전하게 검사할 수 있는 함수.
  • 여러 타입을 튜플로 넘길 수 있고, 상속까지 고려함.
  • bool은 int의 자식 클래스라서 isinstance(False, int)는 True가 나온다!

필요하면 type()과의 비교, 클래스 상속 구조 시각화도 함께 정리해줄게 😎