- type不考虑继承关系
- isinstance考虑继承关系
type函数可以用来检查变量类型,也可以用来创建类,而当我们想要去判断某个变量是不是某类型时,就可以使用isinstance函数。
a = 1
b = "耗子"
print(isinstance(b, (int, str))) # True 返回值为布尔值 ()-->or
print(type(a)) # <class 'int'> int
当然,type和isinstance函数最主要的区别是是否考虑继承关系。
class Father(object):
pass
class Son(Father):
pass
ls = Son()
print(isinstance(ls,Son)) # True
print(isinstance(ls,Father))# True isinstance考虑到了继承的关系
print(type(ls) is Son) # True
print(type(ls) is Father)# False type()并不考虑继承关系
print(f'Son_id:{id(Son)},Father_id:{id(Father)}')
# Son_id:2605524088920,Father_id:2605524094584
'''
is和==的区别
is是否引用同一个对象,比较的是地址
==判断值是否相等
'''