isinstance 和 type() 函数可以用来查询变量所指的对象类型。
比如:
a=1 print(type(a)) ------------------- <class 'int'> 也可以直接用isinstance进行判断是否未int 类型 print(isinstance(a,int)) ------------- true
但是在判断继承的关系的时候,二者判断结果会有所不同:
class A: pass class B(A): pass isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False
两者主要区别
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
== 和 is 区别
is是指向判断的对象所在的ID是否相同
比如:
a=1 b=a print(a is b) --------- True 如果 a=1 b=1 print(a is b) ------------- Flase
下面例子中 a 和 b 虽然都为1 但是a 和 b 在内存中不同的ID,所以得出Flase
a=1 b=1 print(a==b)
--------
True
该例子中对比的就是a 和 b 的数值是否相等。