python数据类型判断type与isinstance的区别实例解析


Posted in Python onOctober 31, 2017

在项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。
这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过来的参数。

验证类型用type函数,非常好用,比如

>>type('foo') == str
True
>>type(2.3) in (int,float)
True

既然有了type()来判断类型,为什么还有isinstance()呢?

一个明显的区别是在判断子类。

type()不会认为子类是一种父类类型。

isinstance()会认为子类是一种父类类型。

千言不如一码。

class Foo(object):
  pass
  
class Bar(Foo):
  pass
  
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
  
class Foo(object):
  pass
  
class Bar(Foo):
  pass
  
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
输出
True
False
True

需要注意的是,旧式类跟新式类的type()结果是不一样的。旧式类都是<type 'instance'>。

class A:
  pass
class B:
  pass
class C(object):
  pass
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
class A:
  pass
class B:
  pass
class C(object):
  pass
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
输出
old style class <type 'instance'>
old style class <type 'instance'>
new style class <class '__main__.C'>
True

不存在说isinstance比type更好。只有哪个更适合需求。

总结

以上就是本文关于python数据类型判断type与isinstance的区别实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python编程之黑板上排列组合,你舍得解开吗、浅谈Python由__dict__和dir()引发的一些思考等,有什么问题可以留言,大家一起交流讨论。

Python 相关文章推荐
python计算方程式根的方法
May 07 Python
详解Python使用tensorflow入门指南
Feb 09 Python
有关Python的22个编程技巧
Aug 29 Python
python发送告警邮件脚本
Sep 17 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
tensorflow常用函数API介绍
Apr 19 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
python中requests库session对象的妙用详解
Oct 30 #Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 #Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 #Python
Python进程间通信之共享内存详解
Oct 30 #Python
import的本质解析
Oct 30 #Python
python中hashlib模块用法示例
Oct 30 #Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 #Python
You might like
php 函数使用方法与函数定义方法
2010/05/09 PHP
php GeoIP的使用教程
2011/03/09 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
js快速排序的实现代码
2013/12/08 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
Python之父谈Python的未来形式
2016/07/01 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
结婚邀请函范文
2014/01/14 职场文书
小学科学教学反思
2014/01/26 职场文书
教室标语大全
2014/06/21 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫