isinstance()是Python最推荐的类型检查方式,能准确判断变量是否属于某类型或其子类;支持单类型、多类型元组及继承关系检查,比type()更灵活可靠。

isinstance() 是 Python 中最推荐、最安全的类型检查方式,它能准确判断一个变量是否属于某个类型(或其子类),比直接比较 type() 更灵活可靠。
基本用法:检查单个类型
语法为 isinstance(obj, type),返回布尔值:
-
isinstance(42, int)→True -
isinstance("hello", str)→True -
isinstance([1, 2], list)→True -
isinstance(3.14, int)→False
检查多个类型:传入元组
若需兼容多种可能类型,把类型们放进元组里即可:
-
isinstance(5, (int, float))→True(整数也属于数值范畴) -
isinstance("test", (list, tuple, str))→True -
isinstance(None, (str, int, bool))→False
检查自定义类及继承关系
isinstance() 会正确识别子类实例:
快速生成专业的 Python 脚本和应用代码。一键创建完整项目结构,支持CLI、API、爬虫、Bot、Django等多种项目类型,包含完整的项目结构、配置文件、依赖管理、测试、README和文档。
立即学习“Python免费学习笔记(深入)”;
- 定义
class Animal: pass和class Dog(Animal): pass d = Dog()-
isinstance(d, Dog)→True -
isinstance(d, Animal)→True(因继承) -
isinstance(d, object)→True(所有类都隐式继承 object)
常见误区与注意事项
避免用 type(x) == int 替代 isinstance(x, int),因为前者不支持继承;也不要对内置类型字符串写错名(如 "int" 是字符串,不是类型):
- ❌
isinstance(42, "int")→ 报错(TypeError) - ❌
type([1,2]) == list→ 虽然结果对,但无法识别collections.UserList等子类 - ✅
isinstance([1,2], list)→ 正确且健壮
不复杂但容易忽略:类型检查应服务于逻辑清晰和防御性编程,而不是强行约束。合理使用 isinstance() 能让代码更可读、更鲁棒。

















