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。



全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.