python中isinstance()函数的用法实例,与type()的区别
python中isinstance()函数
isinstance()函数是python中的一个内置函数,用来查询对象的类型,接收两个参数,返回值为bool类型。
isinstance()函数的参数语法结构
isinstance( object, classinfo );
- object参数:python对象;
- classinfo:是类型或类型构成的元组;
当object的数据类型与classinfo相匹配(如果classinfo为元组的话,只要与元组中的任意一个元素匹配)即可返回True,否则返回False。
isinstance()函数实例代码
>>> isinstance(1,int)
True
>>> isinstance('a',(int,str,float))
True
>>> isinstance([],(set,int,dict))
False
>>> isinstance(2,(long,int))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'long' is not defined
>>> isinstance(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance expected 2 arguments, got 1
代码解析
如上代码,1、isinstance()函数的第二个参数classinfo可以是单个的数据类型,也可以是由数据类型构成的元组;2、isinstance()的第二个参数如果出现python没有出现(不是内置的,也没有自个定义的)的数据类型,那么python会抛出NameError;3、isinstance expected 2 arguments, got 1,可见isinstance()函数必须接收两个参数,否则会抛出TypeError;
isinstance()函数与type()函数的区别
isinstance()函数和type()函数虽然都可以用来判断python对象的数据类型,但是二者的应用场景有明显的不同:
- isinstance()函数返回的是bool类型的值,type()函数返回的是数据类型或创建新的类(如果有三个参数的话);
- isinstance()考虑数据类型(类)的继承关系,而type()并不考虑;
isinstance()和type()函数实例代码
>>> class A():
... pass
...
>>> class C(A):
... pass
...
>>> b = C()
>>> isinstance(b,C)
True
>>> isinstance(b,A)
True
>>> type(b)
<class '__main__.C'>
代码解析
如上代码,C继承了A,通过isinstance()函数判断实例b,可以发现第二个参数为C和A返回的都是True。