網頁

搜尋此網誌

2013年3月8日 星期五

徹底研究Python:談型別(type)

徹底研究Python:談型別(type)。

Python內建型別總共28個,這些型別本身也是一種物件(在Python程式語言裡面所有的都是物件),稱為型別物件(type objects),使用type()函式可以知道物件的型別是什麼型別物件。

在Python的標準程式庫中,types模組定義部分型別的型別名稱,我們可以使用這些型別名稱取得型別物件,像是types.IntType就是取的int型別物件,注意到並不是所有的型別物件都有定義名稱,只有16個型別有定義名稱,整理如下表。

內建型別物件型別名稱
basestring
boolBooleanType
bufferBufferType
bytearray
bytes (bytes型別是Python 3.0才正式新增, 2.x等於str)
classmethod
complexComplexType
dictDictType, DictionaryType 
enumerate
fileFileType
floatFloatType
frozenset
intIntType
listListType
longLongType
memoryview
objectObjectType
property
reversed
set
sliceSliceType
staticmethod
strStringType
super
tupleTupleType
typeTypeType
unicodeUnicodeType
xrangeXRangeType

另外在內建常數的部分,types模組定義定義3個型別名稱,分別是:

內建常數型別名稱
NoneNoneType
NotImplementedNotImplementedType
EllipsisEllipsisType


剩下的型別名稱則是常用的物件,因此types模組定義這些物件的型別名稱,總共17個
  1. BuiltinFunctionType
  2. BuiltinMethodType
  3. ClassType
  4. CodeType
  5. DictProxyType
  6. FrameType
  7. FunctionType
  8. GeneratorType
  9. GetSetDescriptorType
  10. InstanceType
  11. LambdaType
  12. MemberDescriptorType
  13. MethodType
  14. ModuleType
  15. StringTypes
  16. TracebackType
  17. UnboundMethodType

列出內建型別的程式碼
if __name__ == "__main__":
    import types
    for item in dir(__builtins__):
        attr = getattr(__builtins__, item)
        if type(attr) is types.TypeType and \
           not issubclass(attr, BaseException):
            print attr

###

沒有留言:

張貼留言

熱門文章