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中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
Django vue前后端分离整合过程解析
Nov 20 Python
python使用BeautifulSoup 解析HTML
Apr 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
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
JS 时间显示效果代码
2009/08/23 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
Python读取网页内容的方法
2015/07/30 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
python多线程实现TCP服务端
2019/09/03 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
计算机大学生的自我评价
2013/10/15 职场文书
银行介绍信范文
2014/01/10 职场文书
品德评语大全
2014/05/05 职场文书
企业文化宣传标语
2014/06/09 职场文书
2019销售早会主持词
2019/06/27 职场文书