Python學習筆記4:Python物件
1、Python物件
所有Python物件都擁有三個特性:身份(只讀,id())、型別(只讀,type())和值。
Python型別也是物件。物件的值是否可更改被稱為物件的可改變性(mutability)
物件屬性:物件有屬性、值和相關聯的可執行程式碼(方法)
2、標準型別(基本資料型別)
- 數字
- Integer整型
- Boolean布林型
- Long Integer長整型
- Floating point real number 浮點型
- Complex number複數型
- String字串
- List列表
- Tuple元組
- Dictionary字典
3、其他內建型別
- 型別
- Null物件(None)
- 檔案
- 集合/固定集合
- 函式/方法
- 模組
- 類
✪None
Null物件,或稱為NoneType,只有一個值None,不支援任何運算也沒有任何內建方法。None的布林值總是False。
這些物件的布林值是False:None、False、所有的值為0的數、0、0.0、0L、0.0+0.0j、“”、{}、()、[]。
4、內部型別
(1)程式碼物件
編譯過的Python原始碼片段是可執行物件。呼叫內建函式Compile()可以得到程式碼物件。程式碼物件可以被exec命令或eval()內建函式來執行。程式碼物件是函式的一個屬性。
(2)幀物件
Python的執行棧幀。它的屬性包括指向上一幀的連結,正在被執行的程式碼物件,本地及全域性名稱空間字典及當前指令等。(包含直譯器在執行時所需知道的所有資訊。)每次函式呼叫產生一個新的幀,每一個幀物件都會相應地建立一個C棧幀。跟蹤記錄物件用到幀物件。
(3)跟蹤記錄物件
異常發生時,一個包含針對異常的棧跟蹤記錄物件被建立。
(4)切片物件
使用Python擴充套件的切片語法時,會建立切片物件。切片物件也可以由內建函式slice()來生成。
(5)省略物件
省略物件用於擴充套件切片語法中,起記號作用。在切片語法中表示省略號。有一個唯一的名字Ellipsis,布林值始終為True。
(6)Xrange物件
呼叫內建函式Xrange()會產生一個Xrange物件。
5、標準型別操作符
(1)比較物件值
< > <= >= == != <>
所有內建型別都支援比較運算。比較操作針對物件值進行。支援多個比較操作在同一行上進行。例:3<4<7
(2)物件身份比較
a is b <=>id(a)==id(b)
a is not b <=>id(a)!=id(b)
整型物件和字串物件是不可變物件,所以Python會很高效地快取它們。Python僅快取簡單整型。
(3)布林運算
優先順序:not>and>or
6、標準內建函式
(1)cmp()
用於比較兩個物件obj1和obj2,。若obj1小於obj2,返回一個負整型;若obj1大於obj2,則返回一個正整型;若obj1等於obj2返回0。
(2)type()
得到一個物件的型別,並返回相應的type物件。
**(3)str()和repr()(及反引號()操作符)**
在特性和功能方面完全一樣,它們返回的是一個物件的“官方”字串表示,絕大多數情況下可以通過求值運算(eval())重新得到該物件。str()有所不同,str()致力於生成一個物件的可讀性好的字串表示,適用於print。
以字串的方式獲取物件的內容、型別、數值屬性等資訊。
obj==eval(repr((obj))
repr()和
(4)type()和isinstance()
isinstance(obj1,obj2)在obj1是obj2的一個例項,或者是obj2的子類的一個例項時,返回True,否則返回False。
Python不支援方法或函式過載。
Python2.2統一了型別和類。
7、工廠方法
- int()/long()/float()/complex()
- str()/unicode()/basestring()
- list()/tuple()
- type()
- dict()
- bool()
- set()/frozenset()
- object()
- classmethod()
- super()
- property()
- file()
8、標準型別的分類
標準型別–>基本內建資料物件原始型別
(1)儲存模型
- 原子/標量儲存:一個能儲存單個字面物件的型別。
- 容器儲存:可容納多個物件的型別。所有的Python容器物件都能夠容納不同型別的物件。
(2)更新模型
可變型別允許值被更新,不可變物件則不允許更改它們的值。
- 可變物件:列表、字典
- 不可變物件:元組、數字、字串
(3)訪問模型
- 直接訪問:數字
- 順序訪問:字串、列表、元組(序列型別)
- 對映訪問:字典
Python不支援字元型別。
9、Python不支援的型別
- char或byte
- 指標
- int vs short vs long
- float vs double