代码点读机 / Python / isinstance

isinstance Python · 内置函数

`isinstance` 检查一个对象是否属于某个类型(或该类型的子类),返回布尔值(真或假)。就像测谎仪,检查一个人是不是说谎了,如果是就返回真,否则假。

怎么用

isinstance(对象, 类型)
isinstance(对象, (类型1, 类型2, ...))   # 可以是多个类型

小例子

print(isinstance(42, int))
print(isinstance("你好", str))
print(isinstance(3.14, (int, float)))   # 是其中之一即为真
print(isinstance(42, str))

运行结果

True
True
True
False

对比:用 type 判断类型

print(type(42) == int)   # True
`type` 不考虑继承,而 `isinstance` 会考虑子类。比如你有一个自定义类继承自 `int`,`isinstance` 会返回 True,而 `type` 不会。

常见使用场景

1. 在函数中检查参数类型:
def 加法(a, b):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("参数必须是数字")
    return a + b
2. 判断对象是否是某个类的实例:
class 动物: pass
class 狗(动物): pass
d = 狗()
print(isinstance(d, 动物))   # True,子类实例也是父类类型
3. 避免错误的类型操作。

提醒:- `isinstance` 更推荐用于类型检查,因为它支持继承。 - 第二个参数可以是类型元组,表示多个类型之一即可。 - 如果对象是 `None`,返回 `False`。

官方文档:https://docs.python.org/zh-cn/3/library/functions.html#isinstance

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条