python中type可以获得一个对象的数据类型,isinstance可以判断一个对象的数据类型,他们的区别有两点
type只是返回一个对象的数据类型,而isinstance可以判断这个对象的数据类型是否为某几个数据类型中的一个。
假设我们要判断一个对象的数据类型是否为int或者float,两个函数的写法示例如下
a = 4
# 使用type
if type(a) == int or type(a) == float:
print('yes')
# 使用isinstance
if isinstance(a, (int, float)):
print('yes')
显然,在这种场景下,isinstance更有优势
class A:
pass
class B(A):
pass
a = A()
b = B()
print(type(b) == A) # False
print(isinstance(b, A)) # True
B是A的子类, type(b)返回的是类B, 不等于A, 但B是A的子类,因此,我们可以认为b也是A的对象,面对这种存在继承关系的情况,应当使用isinstance
QQ交流群: 211426309