WithCoderWithCoderWithCoder

python如何判断变量的数据类型

    在之前的文章中,我们介绍了Python基本数据类型:数字、字符串、列表、元组、字典、集合这六种基本数据类型。其中数字又包含整型(整型又包括标准整型、长整型(Python2.7及之前版本有))、浮点型、复数类型、布尔型(布尔型就是只有两个值的整型)这几种数字类型。列表、元组、字符串都是序列。

    在实际开发时,有时我们需要判断给定的数据类型是否是指定的类型,在Python有两种方法判断变量的类型:type() 和 isinstance()

    一、type() 函数

    type() 函数可以返回对象的类型。

    举例1,返回对象类型:   

>>> type(1) # 返回数字1的类型
<class 'int'>
>>> type('abc') # 返回abc的类型
<class 'str'>
>>>

    举例2,判断对象类型

>>> if type(1) is int:
        print('数字')
        
数字
>>> if type('abc') is str:
        print('字符串')
        
字符串
>>>

    二、isinstance() 函数

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

    语法:

isinstance(object, classinfo)

    参数

  • object -- 实例对象。

  • classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组

    举例1,:

>>> a = 1
>>> isinstance(a,int) # 判断a是否是整数
True
>>> isinstance(a,str) # 判断a是否是字符串
False
>>> isinstance(a,(int,str))
True
>>>

    三、type() 和 isinstance() 的区别

    type() 和 isinstance() 函数的功能类似,它们的区别,先举例如下:

>>> class A: # 创建类A
        pass
>>> class B(A): # 创建类B,B继承A
        pass
    
>>> type(A()) == A
True
>>> isinstance(A(),A)
True
>>> type(B()) == A
False
>>> isinstance(B(),A)
True

    从上面的例子可以看出,isinstance() 和 type() 的区别在于:

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

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


欢迎分享交流,转载请注明出处:WithCoder » python如何判断变量的数据类型