Python为每一个object在创建的时候就指定了一个内部类型,当我们不知道一个变量是什么类型时,就需要通过一些方法来输出变量的类型,Python的type函数提供了这样的功能。type()返回任意Python对象的类型,而不局限于标准类型。
下面的程序演示了一些类型的输出:
#http://www. 测试代码
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. 测试代码
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. 测试代码
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. 测试代码
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环境测试通过.