Python 判斷變量的類型


這里有兩種方法。type 和isinstance 

 

import types

aaa = 0
print type(aaa)
if type(aaa) is types.IntType:
    print "the type of aaa is int"
if isinstance(aaa,int):
    print "the type of aaa is int"

bbb = 'hello'
print type(bbb)
if type(bbb) is types.StringType:
    print "the type of bbb is string"
if isinstance(bbb,str):
    print "the type of bbb is string"

#if the type is NoneType,the isinstance does not work
#we should judge the NoneType like below
#if row is None
#if type(row) is types.NoneType

#In my opinion,use the types to judge the type of a param is convinient<span style="font-family:Arial;background-color: rgb(255, 255, 255);">, use the isinstance to judge whether a instance is a type of a class or not</span>

一、isinstance()

在Python中可以使用type()與isinstance()這兩個函數判斷對象類型,而isinstance()函數的使用上比type更加方便。

復制代碼代碼如下:

 1 # coding=utf-8
 2  
 3 a = 10
 4  
 5 def b():
 6     pass
 7  
 8 print isinstance(a,(int,str))
 9 print isinstance(a,(float,str))
10 print isinstance(b,(str,int))
11  
12 class c:
13     pass
14  
15 obj = c()
16  
17 print isinstance(obj,(c,int))

執行結果:

復制代碼代碼如下:

1 True
2 False
3 False
4 True

二、isinstance 和 type的區別

isinstance 和 type的區別在於:

復制代碼代碼如下:
 1 class A:
 2     pass
 3  
 4 
 5 class B(A):
 6     pass
 7 
 8 isinstance(A(), A)  # returns True
 9 type(A()) == A      # returns True
10 isinstance(B(), A)    # returns True
11 type(B()) == A        # returns False

區別就是 對於subclass之類的 type就不行了,所以,強烈建議不要使用type判斷對象類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM