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

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

相关文章推荐

Python 内建函数 - int(x=0)

参数形式 Manual 直译 实例 拓展阅读参数形式 int(x=0) int(x, base=10) ManualReturn an integer object constructed from ...

python中常用的列表类型内建函数

1、list.append(obj)         向列表中添加一个对象obj list = ['apple', 'pear', 'orange'] >>&...

Python字符串类型的内建函数

1、string.capitalize()  把字符串的第一个字符大写  例如: >>> s = 'hello world' >>> s.capitalize() 'Hello world' 2、st...
  • lhyhr
  • lhyhr
  • 2013-07-19 10:04
  • 1070

Python列表类型的内建函数使用实例(insert、remove、index、pop等)

#coding=utf8 ''' 标准类型函数: cmp():进行序列比较的算法规则如下: ------------------------------------------------------...

Python映射类型内建函数与工厂函数操作实例源代码

#coding=utf-8 ''' type():返回字典类型 str():返回字典的字符串表示形式 cmp():比较函数。 cmp用于字典比较顺序是:字典的大小-->字典键------->字典值。 ...

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

参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013747384331...

python内建函数大全

  • 2013-08-15 15:31
  • 21KB
  • 下载

python内建函数

  • 2012-12-31 14:19
  • 28KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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