網站地圖 | RSS訂閱 老鐵博客 - 上海SEO優化|上海網站建設|蜘蛛池出租|站群代搭建
你的位置:首頁 ? 前端腳本 ? 正文

isinstance,c語言判斷輸入的字符的類型

2020-6-10 13:54:35 | 作者:老鐵SEO | 0個評論 | 人瀏覽

  整體的意思是“創建一個類型變量cur,它引用游標”,除了cur外,其余全是關鍵字。


  TYPEcur:定義類型變量


  isrefcursor:相當于數據類型,不過是引用游標的數據類型。


  這種變量通常用于存儲過程和函數返回結果集時使用,因為PL/SQL不允許存儲過程或函數直接返回結果集,但可以返回類型變量,于是引用游標的類型變量作為輸出參數或返回值就應運而生了。


  Python中為什么推薦使用isinstance來進行類型判斷


  Python在定義變量的時候不用指明具體的的類型,解釋器會在運行的時候會自動檢查變量的類型,并根據需要進行隱式的類型轉化。因為Python是動態語言,所以一般情況下是不推薦進行類型轉化的。比如"+"操作時,如果加號兩邊是數據就進行加法操作,如果兩邊是字符串就進行字符串連接操作,如果兩邊是列表就進行合并操作,甚至可以進行復數的運算。解釋器會在運行時根據兩邊的變量的類型調用不同的內部方法。當加號兩邊的變量類型不一樣的時候,又不能進行類型轉化,就會拋出TypeError的異常。


  但是在實際的開發中,為了提高代碼的健壯性,我們還是需要進行類型檢查的。而進行類型檢查首先想到的就是用type(),比如使用type判斷一個int類型。


  importtypes


  iftype(1)istypes.Integer:


  print('1是int類型')


  else:


  print('1不是int類型')


  上面的程序會輸出:1是int類型


  我們在types中可以找到一些常用的類型,在2.7.6中顯示的結果:


  types.BooleanType#bool類型


  types.BufferType#buffer類型


  types.BuiltinFunctionType#內建函數,比如len()


  types.BuiltinMethodType#內建方法,指的是類中的方法


  types.ClassType#類類型


  types.CodeType#代碼塊類型


  types.ComplexType#復數類型


  types.DictProxyType#字典代理類型


  types.DictType#字典類型


  types.DictionaryType#字典備用的類型


  types.EllipsisType


  types.FileType#文件類型


  types.FloatType#浮點類型


  types.FrameType


  types.FunctionType#函數類型


  types.GeneratorType


  types.GetSetDescriptorType


  types.InstanceType#實例類型


  types.IntType#int類型


  types.LambdaType#lambda類型


  types.ListType#列表類型


  types.LongType#long類型


  types.MemberDescriptorType


  types.MethodType#方法類型


  types.ModuleType#module類型


  types.NoneType#None類型


  types.NotImplementedType


  types.ObjectType#object類型


  types.SliceTypeh


  types.StringType#字符串類型


  types.StringTypes


  types.TracebackType


  types.TupleType#元組類型


  types.TypeType#類型本身


  types.UnboundMethodType


  types.UnicodeType


  types.XRangeType


  在Python3中,類型已經明顯減少了很多


  types.BuiltinFunctionType


  types.BuiltinMethodType


  types.CodeType


  types.DynamicClassAttribute


  types.FrameType


  types.FunctionType


  types.GeneratorType


  types.GetSetDescriptorType


  types.LambdaType


  types.MappingProxyType


  types.MemberDescriptorType


  types.MethodType


  types.ModuleType


  types.SimpleNamespace


  types.TracebackType


  types.new_class


  types.prepare_class


  但是我們并不推薦使用type來進行類型檢查,之所以把這些類型列出來,也是為了擴展知識面。那為什么不推薦使用type進行類型檢查呢?我們來看一下下面的例子。


  importtypes


  classUserInt(int):


  def__init__(self,val=0):


  self.val=int(val)


  i=1


  n=UserInt(2)


  print(type(i)istype(n))


  上面的代碼輸出:False


  這就說明i和n的類型是不一樣的,而實際上UserInt是繼承自int的,所以這個判斷是存在問題的,當我們對Python內建類型進行擴展的時候,type返回的結果就不夠準確了。我們再看一個例子。


  classA():


  pass


  classB():


  pass


  a=A()


  b=B()


  print(type(a)istype(b))


  代碼的輸出結果:True


  type比較的結果a和b的類型是一樣的,結果明顯是不準確的。這種古典類的實例,type返回的結果都是一樣的,而這樣的結果不是我們想要的。對于內建的基本類型來說,使用tpye來檢查是沒有問題的,可是當應用到其他場合的時候,type就顯得不可靠了。這個時候我們就需要使用isinstance來進行類型檢查。


  isinstance(object,classinfo)


  object表示實例,classinfo可以是直接或間接類名、基本類型或者有它們組成的元組。


  >>>isinstance(2,float)


  False


  >>>isinstance('a',(str,unicode))


  True


  >>>isinstance((2,3),(str,list,tuple))


  True


  python3isinstance函數的用法,下面的代碼如何解釋?


  isinstance的用法:


  語法:


  isinstance(object,classinfo)


  其中,object是變量,classinfo是類型即(tuple,dict,int,float,list,bool等)和class類


  若參數object是classinfo類的實例,或者object是classinfo類的子類的一個實例,返回True。


  若object不是一個給定類型的的對象,則返回結果總是False。


  若classinfo不是一種數據類型或者由數據類型構成的元組,將引發一個TypeError異常。


  例如:


  >>>isinstance(3,int)


  True


  >>>


  >>>isinstance(3.5,float)


  True


  >>>


  >>>isinstance(123,str)


  False


  >>>


  >>>isinstance('adf',(str,float,int))


  True


  >>>


  >>>classmyClass:


  pass


  >>>test=myClass()


  >>>isinstance(test,myClass)


  True12345678910111213141516171234567891011121314151617


  type()與isinstance()的區別:


  共同點:兩者都可以判斷對象類型


  不同點:對于一個class類的子類對象類型判斷,type就不行了,而isinstance可以。


  例如:


  classA:


  pass


  classB(A):


  pass


  isinstance(A(),A)#returnsTrue


  type(A())==A#returnsTrue


  isinstance(B(),A)#returnsTrue


  type(B())==A#returnsFalse1234567891012345678910


  綜上,推薦使用isinstance判斷對象類型。


  詳談Java中instanceof和isInstance的區別


  對象instanceof類


  objinstanceofclass


  如果classobj1=obj成立的話,返回true,否則返回false


  類.isInstance(對象)


  class.isInstance(obj)


  如果classobj1=obj成立的話,返回true,否則返回false

  • 本文來自: 老鐵博客,轉載請保留出處!歡迎發表您的評論
  • 相關標簽:
  • 已有0位網友發表了一針見血的評論,你還等什么?

    必填

    選填

    記住我,下次回復時不用重新輸入個人信息

    必填,不填不讓過哦,嘻嘻。

    ◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

    相關推薦

    色情激情片日本大全