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二叉树遍历的实现方法
Nov 21 Python
python 排序算法总结及实例详解
Sep 28 Python
Python实现的矩阵类实例
Aug 22 Python
python把转列表为集合的方法
Jun 28 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
使用Python实现 学生学籍管理系统
Nov 26 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
pytorch实现手写数字图片识别
May 20 Python
Python实现拼音转换
Jun 07 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php记录日志的实现代码
2011/08/08 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
浅析Python基础-流程控制
2016/03/18 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python实现自动登录后台管理系统
2018/10/18 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
python如何使用腾讯云发送短信
2020/09/17 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
综合素质自我评价怎么写
2014/09/14 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL