python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實(shí)例解析
在項(xiàng)目中,我們會(huì)在每個(gè)接口驗(yàn)證客戶端傳過來的參數(shù)類型,如果驗(yàn)證不通過,返回給客戶端“參數(shù)錯(cuò)誤”錯(cuò)誤碼。
這樣做不但便于調(diào)試,而且增加健壯性。因?yàn)榭蛻舳耸强梢宰鞅椎模灰p易相信客戶端傳過來的參數(shù)。
驗(yàn)證類型用type函數(shù),非常好用,比如
>>type('foo') == str
True
>>type(2.3) in (int,float)
True
既然有了type()來判斷類型,為什么還有isinstance()呢?
一個(gè)明顯的區(qū)別是在判斷子類。
type()不會(huì)認(rèn)為子類是一種父類類型。
isinstance()會(huì)認(rèn)為子類是一種父類類型。
千言不如一碼。
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()結(jié)果是不一樣的。舊式類都是<type 'instance'>。
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 <type 'instance'> old style class <type 'instance'> new style class <class '__main__.C'> True
不存在說isinstance比type更好。只有哪個(gè)更適合需求。
總結(jié)
以上就是本文關(guān)于python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python編程之黑板上排列組合,你舍得解開嗎、淺談Python由__dict__和dir()引發(fā)的一些思考等,有什么問題可以留言,大家一起交流討論。
相關(guān)文章
在RedHat系Linux上部署Python的Celery框架的教程
這篇文章主要介紹了在RedHat系Linux上部署Python的Celery框架的教程, Celery是一個(gè)并行分布框架,擁有良好的I/O性能,需要的朋友可以參考下2015-04-04
python學(xué)生管理系統(tǒng)代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了python學(xué)生管理系統(tǒng)代碼實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
用python生成與調(diào)用cntk模型代碼演示方法
今天小編就為大家分享一篇用python生成與調(diào)用cntk模型代碼演示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python辦公自動(dòng)化之CSV文件的運(yùn)用和管理
Python辦公?動(dòng)化是利?Python編程語?來創(chuàng)建腳本和程序,以簡(jiǎn)化、加速和?動(dòng)化?常辦公任務(wù)和?作流程的過程,本文主要來介紹一下如何利用Python進(jìn)行CSV文件的運(yùn)用和管理,感興趣的可以了解下2023-12-12
Python os.listdir與os.walk實(shí)現(xiàn)獲取路徑詳解
這篇文章主要介紹了Python使用os.listdir和os.walk獲取文件路徑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-10-10
Python 中最長(zhǎng)公共子序列的長(zhǎng)度
子序列是在不改變剩余字符的順序的情況下,在刪除一些字符或不刪除任何字符后從給定序列獲得的序列,這篇文章主要介紹了Python 中的最長(zhǎng)公共子序列,需要的朋友可以參考下2023-06-06
python實(shí)現(xiàn)tail實(shí)時(shí)查看服務(wù)器日志示例
今天小編就為大家分享一篇python實(shí)現(xiàn)tail實(shí)時(shí)查看服務(wù)器日志示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12

