当前位置: 首页 > news >正文

【Python Tips】Python内置函数isinstance——检测数据类型:处理多种类型的输入参数(对比type)

一、引言

        在python中写函数或类时,为了提升方法的适用范围,也为了防止报错,对于某些输入参数的类型可能不是固定的,而是可以根据不同类型来做不同处理。

        此时,就需要对输入的参数进行类型判断。python内置的 isinstance 函数就是一个常用的实现方法(虽然使用type()也可以实现某些情况,但是isinstance具有更强大的扩展功能)

二、使用

        1.基本用法

        isinstance接受两个参数输入,第一个是数据,第二个是判断的数据类型,返回的是一个bool数据——True or False。例如在一个处理图片的函数中,可以判断输入数据的格式是否满足要求。

def handle_input(input_data):# 判断是否为字符串类型,通常表示文件路径if isinstance(input_data, str):try:image = Image.open(input_data)print("输入的是图片路径,已成功加载图片")return imageexcept Exception as e:print(f"加载图片失败: {e}")return None# 判断是否为 PIL.Image.Image 类型,表示已加载的图片数据elif isinstance(input_data, Image.Image):print("输入的是已加载的图片数据")return input_data# 判断是否为列表类型elif isinstance(input_data, list):print("输入的是列表")# 可以在这里对列表内容进行进一步的操作return input_data# 判断是否为字典类型elif isinstance(input_data, dict):print("输入的是字典")# 可以在这里对字典内容进行进一步的操作return input_data# 如果输入类型不在上述范围内else:print("输入的类型不支持")return None

        2.扩展用法

        isinstance函数还可以对多个类型和自定义类进行检查判断。

        对多个类型的判断只需在第二个参数数据类型输入元组结构即可。

x = 10.5
print(isinstance(x, (int, float))) 
# 输出 True,因为 x 是 float 类型y = int(10)
print(isinstance(y, (int, float))) 
# 输出 True,因为 y 是 int 类型

        更强大的功能是,isinstance还可以用于检查子类关系,这是type()方法无法实现的。

class Father:passclass Son(Father):passd = Son()print(isinstance(d, Son))     
# 输出 True,因为 d 是 Son 的实例print(isinstance(d, Father)) 
# 输出 True,因为 (d)Son 是 Father 的子类

http://www.mrgr.cn/news/71879.html

相关文章:

  • idea怎么打开两个窗口,运行两个项目
  • 02.06、回文链表
  • python语言基础-5 进阶语法-5.3 流式编程
  • mac安装Pytest、Allure、brew
  • 区块链应用到银行的优势
  • 云原生之k8s服务管理
  • C/C++ 模板与so
  • 十六、多版本并发控制
  • 【大数据测试HBase数据库 — 详细教程(含实例与监控调优)】
  • 速盾:CDN和OBS能共用流量包吗?
  • 解决MySQL中整型字段条件判断禁用不生效的问题
  • excel常用技能
  • 电商系统表的1-n如何设计?情景分析
  • 基于Multisim温度计温度测量检测测量系统电路(含仿真和报告)
  • 【AI日记】24.11.12 东京贫困女子读后感 | 未来学习工作时间分配
  • Python模块练习2(dict)
  • arcgis for js实现popupTemplate弹窗field名称和值转义
  • MySQl基础----Linux下数据库的密码和数据库的存储引擎(内附 实操图和手绘图 简单易懂)
  • PCL 点云分割 基于超体素的分割
  • 线上问题的排查之MySQL死锁如何排查
  • 25浙江省考-专项刷题(资料分析)-错题本
  • 力扣 LeetCode 142. 环形链表II(Day2:链表)
  • 字节青训-多米诺骨牌均衡状态、红包运气排行榜
  • SQL练习(2)
  • Python 进阶函数教程
  • xxl-job报错Connection refused: connect(连接被拒绝)