当前位置:  编程语言>python

测试Python内部类型及type和isinstance用法区别

 
    发布时间:2013-8-4  


    本文导语:  Python为每一个object在创建的时候就指定了一个内部类型,当我们不知道一个变量是什么类型时,就需要通过一些方法来输出变量的类型,Python的type函数提供了这样的功能。type()返回任意Python对象的类型,而不局限于标...

   Python为每一个object在创建的时候就指定了一个内部类型,当我们不知道一个变量是什么类型时,就需要通过一些方法输出变量的类型,Python的type函数提供了这样的功能。type()返回任意Python对象的类型,而不局限于标准类型。

 下面的程序演示了一些类型的输出:  

#http://www.169it.com   测试代码
class test1:
    pass
class test2(test1):
    pass
if __name__=="__main__":
    x=123  #int
    print(type(x))
    y=123.1 #float
    print(type(y))
    z=test1() # test1
    print(type(z))
    zz=test2() #test2
    print(type(zz))
    j='sdf' #str
    print(type(j))
    jj=True #bool
    print(type(jj))
    j3=['s'] #list
    print(type(j3))
    j4=('sdf',) #tuple
    print(type(j4))
    j5={'sdf':132} #dict
    print(type(j5))

输出结果:(1)

那么在程序中如何判断类型并根据判断结果进行相应的处理呢?首先可以通过type和is来进行,代码如下:

#http://www.169it.com   测试代码
class test1:
    pass
class test2(test1):
    pass
if __name__=="__main__":
    x=123  #int
    print(type(x) is int)
    y=123.1 #float
    print(type(y) is float)
    z=test1() # test1
    print(type(z) is test1)
    zz=test2() #test2
    print(type(zz) is test2)
    j='sdf' #str
    print(type(j) is str)
    jj=True #bool
    print(type(jj) is bool)
    j3=['s'] #list
    print(type(j3) is list)
    j4=('sdf',) #tuple
    print(type(j4) is tuple)
    j5={'sdf':132} #dict
    print(type(j5) is dict)

输出结果:(图2)

其次,python还提供了另外一种方法来进行变量类型的测试isinstance函数,代码如下:

#http://www.169it.com   测试代码
class test1:
    pass
class test2(test1):
    pass
if __name__=="__main__":
    x=123  #int
    print(isinstance(x,int))
    y=123.1 #float
    print(isinstance(y,float))
    z=test1() # test1
    print(isinstance(z,test1))
    zz=test2() #test2
    print(isinstance(zz,test2))
    j='sdf' #str
    print(isinstance(j,str))
    jj=True #bool
    print(isinstance(jj,bool))
    j3=['s'] #list
    print(isinstance(j3,list))
    j4=('sdf',) #tuple
    print(isinstance(j4,tuple))
    j5={'sdf':132} #dict
    print(isinstance(j5,dict))

输出结果(图3):

那么isinstance和type到底有什么区别呢?最重要的一个区别为:type只能对类型作直接判断,而isinstance功能比type更强,可以对子类

的类型做出推理判断。具体代码如下:

#http://www.169it.com   测试代码
class test1:
    pass
class test2(test1):
    pass
if __name__=="__main__":
    zz=test2() #test2
    print(isinstance(zz,test1))
    print(isinstance(zz,test2))
    print(type(zz) is test1)
    print(type(zz) is test2)

输出结果:(图4)


以上代码在windows 7下Python 3.3环境测试通过.

    您可能感兴趣的文章:

  • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:测试Python内部类型及type和isinstance用法区别
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2019,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号-3