1. 程式人生 > >Python學習筆記4:Python物件

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()(及反引號()操作符)**
以字串的方式獲取物件的內容、型別、數值屬性等資訊。
obj==eval(repr((obj))
repr()和
在特性和功能方面完全一樣,它們返回的是一個物件的“官方”字串表示,絕大多數情況下可以通過求值運算(eval())重新得到該物件。str()有所不同,str()致力於生成一個物件的可讀性好的字串表示,適用於print。
(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