在项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。
这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过来的参数。
验证类型用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()引发的一些思考等,有什么问题可以留言,大家一起交流讨论。
函数名称:判断数据类型 函数名称:判断数据类型 函数方法 bool = type(str) 参数 必填 说明 str 是 需要判断的数据 返回值 说明 bool 数据类型:"number"、"string"、"boolean"、"table"、"function"、"thread"、"userdata" 函数用例 num = 111 str = tostring(num) dialog("转换后的
问题内容: 这两个代码片段之间有什么区别?使用: 使用isinstance(): 问题答案: 总结答案的内容,迎合继承(派生类的实例也是基类的实例),而检查的相等性type则不(要求类型的标识并拒绝实例)子类型,又称为AKA子类)。 通常,在Python中,你当然希望你的代码支持继承(因为继承非常方便,因此停止使用你的代码来使用它会很糟糕!),因此它比检查的身份要糟糕得多,因为它无缝地支持s遗
# 11.4 类型判断:type-switch 接口变量的类型也可以使用一种特殊形式的 switch 来检测:type-switch (下面是示例 11.4 的第二部分): switch t := areaIntf.(type) { case *Square: fmt.Printf("Type Square %T with value %v\n", t, t) case *Circle:
本文向大家介绍实例详解Matlab 与 Python 的区别,包括了实例详解Matlab 与 Python 的区别的使用技巧和注意事项,需要的朋友参考一下 一、Python简介 Python是一种面向对象的解释型计算机程序设计语言。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议[2] 。Python语法简洁清
本文向大家介绍详解JavaScript数据类型和判断方法,包括了详解JavaScript数据类型和判断方法的使用技巧和注意事项,需要的朋友参考一下 前言 JavaScript 中目前有 7 种基本(原始primitives)数据类型 Undefined, Null,Boolean, Number, String,BigInt,Symbol,以及一种引用类型 Object,Object 中又包括 F
本文向大家介绍Lua判断数据类型的方法,包括了Lua判断数据类型的方法的使用技巧和注意事项,需要的朋友参考一下 一、判断数据类型的方法 type(xxxx) 这个函数的返回值是string类型 也就是说: 二、Lua脚本语言的8种基本数据类型 1.数值(number):内部以double表示. 2.字符串(string):总是以零结尾,但可以包含任意字符(包括零),因此并不等价于C字符串,而是