>type('foo')==strTrue>>type(2.3)in(int,float)True既然有了type()來判斷類型,為什么還有isinstance()呢?一個明顯的區別是在判斷子類。type()不會認為子類是一種" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python數據類型判斷type與isinstance的區別實例解析

系統 2099 0

在項目中,我們會在每個接口驗證客戶端傳過來的參數類型,如果驗證不通過,返回給客戶端“參數錯誤”錯誤碼。
這樣做不但便于調試,而且增加健壯性。因為客戶端是可以作弊的,不要輕易相信客戶端傳過來的參數。

驗證類型用type函數,非常好用,比如

>>type('foo') == str
True
>>type(2.3) in (int,float)
True

既然有了type()來判斷類型,為什么還有isinstance()呢?

一個明顯的區別是在判斷子類。

type()不會認為子類是一種父類類型。

isinstance()會認為子類是一種父類類型。

千言不如一碼。

            
class Foo(object):
  pass
  
class Bar(Foo):
  pass
  
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
  
class Foo(object):
  pass
  
class Bar(Foo):
  pass
  
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
輸出
True
False
True
          

需要注意的是,舊式類跟新式類的type()結果是不一樣的。舊式類都是

            
class A:
  pass
class B:
  pass
class C(object):
  pass
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
class A:
  pass
class B:
  pass
class C(object):
  pass
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
輸出
old style class 
            
              
old style class 
              
                
new style class 
                
                  
True
                
              
            
          

不存在說isinstance比type更好。只有哪個更適合需求。

總結

以上就是本文關于python數據類型判斷type與isinstance的區別實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:Python編程之黑板上排列組合,你舍得解開嗎、淺談Python由__dict__和dir()引發的一些思考等,有什么問題可以留言,大家一起交流討論。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 乐清市| 灵武市| 芒康县| 颍上县| 阳曲县| 麻栗坡县| 绩溪县| 个旧市| 堆龙德庆县| 和龙市| 福州市| 岢岚县| 徐州市| 塔河县| 平陆县| 石景山区| 贺兰县| 额济纳旗| 临江市| 临高县| 大新县| 桂林市| 安国市| 蒲城县| 高阳县| 阿尔山市| 甘德县| 庐江县| 池州市| 广丰县| 贡嘎县| 论坛| 义乌市| 石渠县| 汉阴县| 娄底市| 清远市| 尉氏县| 巴彦县| 虎林市| 博湖县|