这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战
要判断某个变量是否是某种数据类型,可以使用isinstance()也可以是用type()。
type()
class
type(name, bases, dict, **kwds)
- 传入一个参数时,返回 object 的类型。 返回值是一个 type 对象,通常与
object.__class__所返回的对象相同。传入三个参数时,返回一个新的 type 对象。(用不到,不用看)
用它判断数据类型是:
s = 'hello world'
print(type(s) == str)
>>
True
isinstance()
用它判断数据类型是:
s = 'hello world'
print(isinstance(s,str))
>>
True
还可以这样:
s = 'hello world'
print(isinstance(s,(str,int,float)))
print(isinstance(s,(bool,int,float)))
>>
True
False
isinstance() 与 type() 区别
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- isinstance() 会认为子类是一种父类类型,考虑继承关系。
官方说:如果要判断两个类型是否相同推荐使用 isinstance()。
因为:
class F:
def __init__(self):
pass
class S(F):
def __init__(self):
pass
print(isinstance(F(), F))
print(type(F()) == F)
print(isinstance(S(), F))
print(type(S()) == F)
True
True
True
False
由此可见isinstance()的功能更强大,因此判断两个类型是否相同推荐使用isinstance()。