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中__call__方法示例分析
Oct 11 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 Python
python实现批量nii文件转换为png图像
Jul 18 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
python 写一个文件分发小程序
Dec 05 Python
Python 多进程原理及实现
Dec 21 Python
用Python爬虫破解滑动验证码的案例解析
May 06 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php若干单维数组遍历方法的比较
2011/09/20 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
php查询操作实现投票功能
2016/05/09 PHP
PHP对象实例化单例方法
2017/01/19 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
js快速排序的实现代码
2013/12/08 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
Python函数和模块的使用总结
2019/05/20 Python
Python接收手机短信的代码整理
2020/08/02 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
神路信息Java面试题目
2013/03/31 面试题
几个Shell Script面试题
2012/08/31 面试题
应届毕业生的个人自我鉴定
2013/10/24 职场文书
学院领导推荐信
2013/10/30 职场文书
总务岗位职责
2013/11/19 职场文书
建筑人员岗位职责
2013/12/25 职场文书
授权委托书格式模板
2014/04/03 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
利用python进行数据加载
2021/06/20 Python
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android
Django框架模板用法详解
2022/06/10 Python