Python内建函数isinstance无法准确判断bool与int类型

原创 2015年07月08日 15:25:58

Python版本:2.7.9 32bit

首先创建一个元组a

>>> a = (1,True,'abc')

然后使用系统内建函数判断数据类型,如下:

>>> isinstance(a[0],int)
True
>>> isinstance(a[1],int)
True
>>> isinstance(a[2],int)
False
显然isinstance函数无法准确判断整型1与布尔型True,系统默认将True认为是数字1。


=========================================================2015.7.8


昨晚查看Python源代码,并进行常规调试。

内建函数isinstance的原型int PyObject_IsInstance(PyObject *inst, PyObject *cls),此函数中会检查实例的父类的类型,而bool是int类型的子类(参见类型PyBool_Type与PyInt_Type),当然使用isinstance就无法准确判断bool与int型了。

解决办法是使用内建函数type(),函数原型参考PyObject * PyObject_Type(PyObject *o)

>>> a[0]
1
>>> a[1]
True
>>> print type(a[0]) is int
True
>>> print type(a[1]) is bool
True
>>> print type(a[1]) is int
False

========================================================2015.7.9
版权声明:本文为博主原创文章,未经博主允许不得转载。

Python2.7:测试内部类型及type和isinstance用法区别

# -*- coding: UTF-8 -*-class test1: passclass test2(test1): passif __name__=="__main__": #判断类型 a=123...
  • LANGZI7758521
  • LANGZI7758521
  • 2016年03月24日 14:15
  • 2357

python 函数定义和内置函数isinstance以及数据类型检查type的使用

参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013747384331...
  • u012005313
  • u012005313
  • 2015年08月28日 11:30
  • 3916

Python的type 还是要靠isinstance判断类型

今天处理数据库内容迁移,碰到时间数据类型无法使用type判断出来的情况 背景知识 datetime模块中的datetime类的实例可以表示一个时刻(日期,以及这个日期中的特定时间),可以不包含时区或者...
  • yourang
  • yourang
  • 2015年10月12日 23:17
  • 519

Python类型判断type与isinstance

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

轻松python文本专题-判断对象里面是否是类字符串(推荐使用isinstance(obj,str))

场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj): return type(obj) is type('') ...
  • raylee2007
  • raylee2007
  • 2015年08月25日 16:08
  • 2711

Python isinstance判断对象类型

Python中判度对象类型方法非常简单,不需要像别的语言一样使用如下的判断方法...
  • chivalrousli
  • chivalrousli
  • 2014年09月21日 21:03
  • 2209

Python之isinstance() 函数判断数据类型

isinstance isinstance(object, classinfo) 判断实例是否是这个类或者object是变量 classinfo 是类型(tuple,dict,int,float...
  • u013372487
  • u013372487
  • 2015年04月22日 14:24
  • 2149

python中assert、isinstance的用法

1. assert 函数说明: Assert statements are a convenient way to insert debugging assertions into a pr...
  • qiqicos
  • qiqicos
  • 2018年01月07日 11:33
  • 82

python基础篇之bool类型

Python中布尔类型 我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:与运算:只有两个布尔值都为 True 时,计算结果才为 Tr...
  • zhengj2008
  • zhengj2008
  • 2017年12月01日 10:26
  • 84

python isinstance函数判断变量类型

在Python中可以使用isinstance函数来判断某个值或变量是否为某个类型 1 print(isinstance(1,int)) 2 print(isinstance(1,float)) ...
  • sheldon761642718
  • sheldon761642718
  • 2016年11月01日 14:25
  • 826
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python内建函数isinstance无法准确判断bool与int类型
举报原因:
原因补充:

(最多只允许输入30个字)