# 面试必备：Python中type()和isinstance()有什么区别？

By [stone](https://paragraph.com/@stone-10) · 2023-11-28

---

在Python编程中，type()和isinstance()是两个常用的函数，用于检查对象的类型。然而，它们之间存在一些重要的区别。本文将详细介绍这两个函数的区别，以帮助你更好地理解Python的类型检查机制。

一、type()函数
----------

type()函数是Python的内建函数，用于返回一个对象的类型。它接受一个参数，即要检查类型的对象。（这里需要注意一下：是返回传入的参数的类型值，不是True或者Fase），例如：

    
    # 来自【python学习与大数据分析】的例子
    x = 10
    print("x的类型是：",type(x))
    # 输出：<class 'int'>
    
    a = 10.01
    print("a的类型是：",type(a))
    # 输出：<class 'float'>
    
    b = "ssssssssssss"
    print("b的类型是：",type(b))
    # 输出：<class'str'>
    
    c = True
    print("c的类型是：",type(c))
    # 输出：<class 'bool'>
    

![image1](https://storage.googleapis.com/papyrus_images/fde0c12f76e96a98bcf4cb74b678f6c405205a43c7d0e342df49048ba2361073.png)

image1

二、isinstance()函数
----------------

Python的isinstance()函数用于检查一个对象是否是某个特定类型的实例。当我们使用isinstance()函数时，它接受两个参数，第一个参数是要检查的对象，第二个参数是要检查的类型，然后会返回一个布尔值，表示对象是否是所需类型的实例。

让我们看一个例子：

    
    # 来自【python学习与大数据分析】的例子
    x = 10
    print("判断x的类型是否是int类型：",isinstance(x,int))
    # 输出：True
    print("判断x的类型是否是float类型：",isinstance(x,float))
    # 输出：False
    
    a = 10.01
    print("判断a的类型是否是float类型：",isinstance(a,float))
    # 输出：True
    print("判断a的类型是否是int类型：",isinstance(a,int))
    # 输出：False
    
    b = "ssssssssssss"
    print("判断b的类型是否是str类型：",isinstance(b,str))
    # 输出：True
    print("判断b的类型是否是dict类型：",isinstance(b,dict))
    
    c = True
    print("判断c的类型是否是bool类型：",isinstance(c,bool))
    # 输出：True
    print("判断c的类型是否是list类型：",isinstance(c,list))
    # 输出：False
    

![image2](https://storage.googleapis.com/papyrus_images/465715c4ca5777f36d39d42be73e4d4433074fa0f32c9e25a7414bffbc68aed3.png)

image2

三、两者的区别
-------

*   type()返回类型，isinstance()检查类型
    
*   type()函数返回一个对象的类型，而isinstance()函数用于检查一个对象是否属于指定的类型。这意味着type()可以用于获取任何对象的类型，而isinstance()只能用于检查指定类型的对象。
    
*   type()适用于所有对象，isinstance()适用于自定义类和内置类型 type()函数可以用于所有Python对象，包括内置类型和自定义类。而isinstance()函数主要用于检查自定义类和内置类型的对象。对于内置类型，如整数、浮点数等，isinstance()可以正常工作。但是，对于一些内置类型的子类（如numpy数组），isinstance()可能无法正确识别，此时可以考虑使用type()函数。
    

从上面的例子和区别可以看出，type()的适用范围比较广泛，建议优先考虑使用type()。

---

*Originally published on [stone](https://paragraph.com/@stone-10/python-type-isinstance)*
