news 2026/4/21 7:57:15

Python isinstance() 函数详解(附:与 type() 的区别)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python isinstance() 函数详解(附:与 type() 的区别)

Python的isinstance()函数用于检查对象是否属于指定类型或类型元组,语法为isinstance(object, type)。


它支持基本类型(int, str等)和容器类型(list, dict等)检查,还能判断多个类型。


与type()不同,isinstance()考虑继承关系,子类会被识别为父类类型。


实际应用中可用于参数验证、数据处理等场景。


注意事项:判断None应使用x is None,布尔值是int子类。


True=》1,False=》0


相比type(),isinstance()更推荐使用,因其支持继承关系,更符合面向对象设计。


Python isinstance() 函数详解(附:与 type() 的区别)


isinstance()函数详解


isinstance()是 Python 的内置函数,用于判断一个对象是否属于某个指定的数据类型(或类型元组)。


基本语法

python

isinstance(object, type)
  • object:要判断的对象

  • type:类型(可以是单个类型,也可以是类型的元组)

  • 返回值:TrueFalse

基本用法

python

# 判断整数 print(isinstance(10, int)) # True print(isinstance(10, str)) # False # 判断字符串 print(isinstance("hello", str)) # True # 判断列表 print(isinstance([1, 2, 3], list)) # True # 判断字典 print(isinstance({"a": 1}, dict)) # True

判断多个类型

python

# 判断是否为整数或浮点数 num = 3.14 print(isinstance(num, (int, float))) # True # 判断是否为列表或元组 data = [1, 2, 3] print(isinstance(data, (list, tuple))) # True

type()的区别

python

class Animal: pass class Dog(Animal): # Dog 继承 Animal pass dog = Dog() # type() 不认为子类是父类类型 print(type(dog) == Animal) # False print(type(dog) == Dog) # True # isinstance() 认为子类是父类类型 print(isinstance(dog, Animal)) # True print(isinstance(dog, Dog)) # True

实际应用场景

1.类型检查

python

def add(a, b): if isinstance(a, (int, float)) and isinstance(b, (int, float)): return a + b else: return "错误:参数必须是数字"
2.处理不同类型的数据

python

def process_data(data): if isinstance(data, list): return [x * 2 for x in data] elif isinstance(data, dict): return {k: v * 2 for k, v in data.items()} elif isinstance(data, (int, float)): return data * 2 else: return "不支持的数据类型"
3.验证函数参数

python

def greet(name, age): if not isinstance(name, str): raise TypeError("name 必须是字符串") if not isinstance(age, int): raise TypeError("age 必须是整数") return f"{name} 今年 {age} 岁"

常用类型检查

python

# 基本类型 isinstance(x, int) # 整数 isinstance(x, float) # 浮点数 isinstance(x, str) # 字符串 isinstance(x, bool) # 布尔值 isinstance(x, complex) # 复数 # 容器类型 isinstance(x, list) # 列表 isinstance(x, tuple) # 元组 isinstance(x, dict) # 字典 isinstance(x, set) # 集合 # 其他 isinstance(x, None) # 错误!应该用 x is None isinstance(x, type(None)) # 正确判断 None

注意事项

  1. 判断 None 要小心

python

x = None print(isinstance(x, type(None))) # True # 更推荐: print(x is None) # True
  1. 布尔值是 int 的子类

python

print(isinstance(True, int)) # True(布尔值是整数的子类) print(isinstance(True, bool)) # True
  1. 建议使用isinstance()而非type()

  • isinstance()支持继承关系,更符合面向对象设计

  • type()只判断精确类型,不考虑继承

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 7:56:17

Flutter Catalog Firebase集成深度指南:认证、数据库与实时聊天

Flutter Catalog Firebase集成深度指南:认证、数据库与实时聊天 【免费下载链接】flutter_catalog An app showcasing Flutter components, with side-by-side source code view. 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_catalog Flutter Cata…

作者头像 李华
网站建设 2026/4/21 7:55:14

终极指南:如何使用Tower缓冲与限流中间件解决高并发性能瓶颈

终极指南:如何使用Tower缓冲与限流中间件解决高并发性能瓶颈 【免费下载链接】tower async fn(Request) -> Result项目地址: https://gitcode.com/gh_mirrors/to/tower Tower是一个强大的Rust异步中间件库,专为构建可靠的网络服务而设计。它通过…

作者头像 李华
网站建设 2026/4/21 7:53:02

BlackSheep OpenAPI文档自动生成:打造完善的API生态系统

BlackSheep OpenAPI文档自动生成:打造完善的API生态系统 【免费下载链接】BlackSheep Fast ASGI web framework for Python 项目地址: https://gitcode.com/gh_mirrors/bl/BlackSheep BlackSheep是一款快速的Python ASGI Web框架,它提供了强大的O…

作者头像 李华
网站建设 2026/4/21 7:52:23

LFM2.5-1.2B-Thinking-GGUF详细步骤:自定义CSS美化Web界面适配企业VI规范

LFM2.5-1.2B-Thinking-GGUF详细步骤:自定义CSS美化Web界面适配企业VI规范 1. 平台简介与目标 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,特别适合在低资源环境下快速部署。该镜像内置了GGUF模型文件和llama.cpp运行时&#xff0c…

作者头像 李华
网站建设 2026/4/21 7:47:18

干货分享|6款大学生AI写作工具实测,降AI+降重+PPT一站式搞定

后台每天都能收到大量提问,核心就一个:写论文到底选哪款AI工具?既能降AI率、降重,又能快速做答辩PPT,不用来回切换软件,还不踩坑?其实写论文的痛点大家都懂:初稿写不动、降重改到崩溃…

作者头像 李华