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 的数值是否相等。

posted on 2020-01-20 15:07  赏孤舟蓑笠  阅读(799)  评论(0编辑  收藏  举报