【Python】数据类型判断的2个函数isinstance和type,通过实例来进行区别和用法

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

isinstance() 和 type()函数的代码写法如下:

isinstance(object, classinfo)
# object -- 实例对象。
# classinfo -- 类型。
# 如果object 的类型==classinfo,返回 True,否则返回 False。
# _*_ coding: utf-8 _*_
class Student():
    def __init__(self, name, subject, score):
        self.name = name
        self.subject = subject
        self.score = score
a = 'papa'
b = 100
c = ["a", "b", "c"]
d = ("papa", "math", "100")
e = {"name": "papa", "subject": "math", "score": "100"}
f = Student("papa", "math", "100")

# isinstance方法
print (isinstance(a, str))
print (isinstance(b, (str,int,list))) # 类型也可以是1个元组,符合其中任意1个既是TRUE
print (isinstance(c, list))
print (isinstance(d, tuple))
print (isinstance(e, dict))
print (isinstance(f, Student))

# type方法
print (type(a), type(b), type(c), type(d), type(e), type(f))
print (type(a) == str)

运行结果:

True
True
True
True
True
True
(<type 'str'>, <type 'int'>, <type 'list'>, <type 'tuple'>, <type 'dict'>, <type 'instance'>)
True

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。

  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

class A:
    pass
class B(A):
    pass

print (isinstance(A(), A))  # returns True
print (type(A()) == A)  # returns True
print (isinstance(B(), A))  # returns True
print (type(B()) == A)  # returns False
发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/woshiyigerenlaide/article/details/104151027