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 01 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
Python清空文件并替换内容的实例
Oct 22 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 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打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Linux下python制作名片示例
2018/07/20 Python
Django 路由系统URLconf的使用
2018/10/11 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
水果花束:Fruit Bouquets
2017/12/20 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
求职推荐信范文
2013/12/01 职场文书
先进事迹报告会感言
2014/01/24 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
借条如何写
2015/05/26 职场文书
python requests模块的使用示例
2021/04/07 Python
Elasticsearch 基本查询和组合查询
2022/04/19 Python