python 内建函数isinstance的用法以及与type的区别

Posted konglingbin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 内建函数isinstance的用法以及与type的区别相关的知识,希望对你有一定的参考价值。

isinstance是Python中的一个内建函数
语法:
isinstance(object, classinfo)
 
如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。
如果classinfo不表示一个类(类型对象), 那么它要么是一个类的元组, 或者递归地包含这样的(由数据类型构成的)元组.其他的序列类型是不被允许的。
如果classinfo不是一种数据类型或者由数据类型构成的元组,将引发一个TypeError异常。

作用:来判断一个对象是否是一个已知的类型。 

其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。其返回值为布尔型(True or flase)。

若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。

 
举例:
>>> isinstance(1, int)
True
>>> isinstance(1.0, float)
True
 >>> a = 4
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))
True
>>>isinstance(a,dict)  判断对象a是否为字典,如果为真,会打印True,如为假,打印False。
 

type()与isinstance()的区别:

共同点:两者都可以判断对象类型 

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。

  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。


不同点:对于一个 class 类的子类对象类型判断,type就不行了,而 isinstance 可以。

例如:

class A:
    pass
class B(A):
    pass

isinstance(A(), A)  # returns True
type(A()) == A      # returns True

isinstance(B(), A)    # returns True
type(B()) == A        # returns False
  • 综上,推荐使用 isinstance 判断对象类型。

  isalpha如果是字母,返回一个非零数;否则返回为0

isalnum如果是字母或数字,返回一个非零数;否则返回为0

isdigit如果是数字(0-9)返回一个非零数;否则返回为0   

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = "this2009";    # 字符中没有空格
print str.isalnum();
str = "this is string example....wow!!!";
print str.isalnum();

以上实例输出结果如下:

True
False











以上是关于python 内建函数isinstance的用法以及与type的区别的主要内容,如果未能解决你的问题,请参考以下文章

python的内建函数isinstance

函数isinstance内建函数(小窗help)

[python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmetho

python isinstanceisalnum函数用法

python isinstance函数

python中判断对象类型的函数——isinstance