✅ 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()과의 비교, 클래스 상속 구조 시각화도 함께 정리해줄게 😎
'기술블로그-Fastapi편' 카테고리의 다른 글
| 👉 Python 개념 정리: 상수(Constant) 와 리터럴(Literal) (0) | 2025.05.26 |
|---|---|
| 📅 공공데이터포털 공휴일 API 사용법 총정리 (0) | 2025.05.26 |
| ✅ Python 타입 힌트는 강제성이 있을까? (0) | 2025.05.23 |
| ✅ Git 브랜치가 왜 main이 아닌 master일까? (0) | 2025.05.23 |
| 🐧 WSL + Python 3.13 + Poetry + PyCharm 프로젝트 설정 가이드 (Windows) (0) | 2025.05.23 |