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

 更新时间:2017年10月31日 08:37:47   投稿:mengwei  
这篇文章主要介绍了python数据类型判断type与isinstance的区别实例解析,具有一定参考价值,需要的朋友可以了解下。

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

验证类型用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()引发的一些思考等,有什么问题可以留言,大家一起交流讨论。

相关文章

  • pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法

    pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法

    这篇文章主要给大家介绍了关于pytorch中.numpy()、.item()、.cpu()、.detach()以及.data的使用方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-08-08
  • 对pandas的层次索引与取值的新方法详解

    对pandas的层次索引与取值的新方法详解

    今天小编就为大家分享一篇对pandas的层次索引与取值的新方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python中最强大的重试库Tenacity使用探索

    Python中最强大的重试库Tenacity使用探索

    这篇文章主要为大家介绍了Python中最强大的重试库Tenacity使用探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 手把手带你打造一个Pytest数据分离测试框架

    手把手带你打造一个Pytest数据分离测试框架

    数据分离测试框架是一种测试框架设计模式,旨在将测试数据与测试逻辑分离,以提高测试用例的可维护性、可读性和复用性,本文就来实现一下,感兴趣的可以了解一下
    2024-03-03
  • Python实战之疫苗研发情况可视化

    Python实战之疫苗研发情况可视化

    2020年底以来,欧美,印度,中国,俄罗斯等多国得制药公司纷纷推出了针对新冠/肺炎的疫苗,这部分主要分析了2020年以来全球疫情形势,各类疫苗在全球的地理分布,疫苗在各国的接种进度进行可视化展示,需要的朋友可以参考下
    2021-05-05
  • python实现顺时针打印矩阵

    python实现顺时针打印矩阵

    这篇文章主要为大家详细介绍了python实现顺时针打印矩阵,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Python3+Flask安装使用教程详解

    Python3+Flask安装使用教程详解

    这篇文章主要介绍了Python3+Flask安装使用教程详解,需要的朋友可以参考下
    2021-02-02
  • python如何支持并发方法详解

    python如何支持并发方法详解

    这篇文章主要介绍了python如何支持并发,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 解决Python3中的中文字符编码的问题

    解决Python3中的中文字符编码的问题

    Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等。这篇文章主要介绍了Python3中的解决中文字符编码的问题,需要的朋友可以参考下
    2018-07-07
  • python基础教程之匿名函数lambda

    python基础教程之匿名函数lambda

    这篇文章主要介绍了 python基础教程之匿名函数lambda的相关资料,需要的朋友可以参考下
    2017-01-01

最新评论