기술블로그-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()과의 비교, 클래스 상속 구조 시각화도 함께 정리해줄게 😎