python核心編程-第四章-我的筆記

1.全部的python對象都擁有三個特性:python

①身份:每一個對象都有惟一的身份標識本身,可用內建函數id()來獲得。基本不會用到,不用太關心緩存

>>> a = 2
>>> id(2)
39411616L
>>> id(a)
39411616L

這個例子也同時說明python中賦值實際上是"引用"函數

②類型:對象的類型決定能夠保存什麼類型的值。用內建函數type()能夠獲得對象的類型。spa

③值:對象表示的數據code

除了值,對象的其餘兩個特性都是隻讀的對象

2.標準類型索引

python標準類型也稱爲「基本數據類型」,由於這些類型是python內建的基本數據類型。主要包括:字符串

①Integer  'int'  整型it

②Long integer    'long'    長整型io

③Floating point real number      'float'    浮點型

④Complex number    'complex'    複數型

⑤Boolean    'bool'    布爾型

⑥String    'str'    字符串

⑦List    'list'    列表

⑧Tuple    'tuple'    元組

⑨Dictionary    'dict'      字典

3.其餘內建類型

(1)其餘數據類型包括:

類型

Null對象(None)

文件

集合/固定集合

函數/方法

模塊

(2)類型對象

①type()函數的輸出其實是一個類型對象,是一個輸出了字符串的類型對象

②全部類型對象的類型都是type。

(3)Null對象

Null對象是python中一個特殊的類型,亦稱爲NoneType。它只有一個值,就是None,不支持任何運算也沒有任何內建方法。

(4)筆記

4.標準類型操做符

(1)對象值的比較

比較操做符用來判斷同類型對象是否相等,因此內建類型均支持比較運算,比較運算返回布爾值True或者False。

實際進行的比較運算因類型而異,好比數字類型根據數值的大小和符號比較,字符串按照字符序列值進行比較,等等。

如圖例

多個比較操做符能夠在同一行進行,順序爲從左到右

附:標準類型值比較操做符

(2)對象身份比較

標準類型值比較操做是針對對象的值進行的,比較的是對象的數值而不是對象自己。python一樣支持對對象自己的比較,做爲對對象值比較的補充。

標準類型對象身份比較操做符:

具體操做:

在上面例子中,在對a、b分別進行列表賦值時,python分別爲a b 建立了不一樣的對象,即便二者的值相等,a b自己仍不相等;

然而在對a b進行整型賦值時,分別賦值的結果倒是a b自己也相等

這種狀況的緣由是,python會緩存簡單的整型,因此a b會指向同一個對象,'a is b' 纔會返回True。在python 2.7中,緩存的簡單整型範圍是(-5,256)

①驗證上限方法

num1 = 0
num2 = 0
while True:
    if num1 is not num2:
        print "%d is the upper limit!" % (num1-1)
        break
    num1 += 1
    num2 += 1

輸出

②驗證下限方法

num1 = 0
num2 = 0
while True:
    if num1 is not num2:
        print "%d is the lower limit!" % (num1+1)
        break
        num1 += -1
        num2 += -1

(3)布爾類型

布爾邏輯操做符包括not、and、or

其中,not優先級最高,and次之,or最低

5.標準類型內建函數

標準類型內建函數包括:

(1)type()函數

type()接受一個對象做爲參數,返回參數的類型,返回值是一個類型對象

(2)cmp()

內建函數cmp()用於比較兩個對象obj1和obj2:若obj1小於obj2,則返回一個負整型;若obj1大於obj2,則返回一個正整型;若obj1等於obj2則返回0。

(3) str()    repr()    ``

三者均可以方便的以字符串的方式獲取對象的內容、類型、數值屬性等信息。

str()函數獲得的字符串可讀性好,返回結果一般沒法用eval()取值,但很適合用於print語句輸出

repr()和``運算在特性和功能上都很是類似,他們返回一個對象的"官方"字符串表示,絕大多數狀況下能夠經過求值運算eval()從新取得該對象。

總之,repr()輸出對python較爲友好,str()輸出對用戶更爲友好,不少狀況下三者的輸出是徹底同樣的

(4) type()    isinstance()

isinstance()是python的一個內建函數,語法是isinstance(object,classinfo)。第一個參數是對象,第二個參數是類型或類型組成的元組,返回的值是布爾型。若對象的類型與第二個參數的類型相同或者對象的類型與做爲元組給出的第二個參數中的某一個類型相同,則返回True。不然,返回False

 6.類型工廠函數

python全部的內建類型如今都是類,像int()  tyoe()等函數成爲了工廠函數。意思是雖然它們看起來像函數,但實際上它們是類,當調用它們時,其實是生成了該類型的一個實例

全部的工廠函數:

7.標準類型的分類

①按存儲模型分類

一個保存單個字面對象的類型,稱爲原子或標量存儲類型;可容納多個對象的類型,稱之爲容器存儲類型,Python全部容器類型均可以容納不一樣類型的對象。

數值、字符串都是原子或標量類型;列表、元組、字典是容器類型

②按更新模型分類

按照數據類型是否容許更新其值能夠分爲可變對象和不可變對象。可變對象容許他們的值被更新,不可變對象不容許他們的值被更改。

列表、字典屬於可變對象,字符串、數值、元組屬於不可變對象

能夠經過對比對象的位置即id()函數來證實這一點

③按訪問模型分類

按照訪問存儲的數據的方式來分類稱爲按訪問模型分類。訪問模型中共有三種訪問方法:直接讀取、順序讀取和映射讀取。

對於數值能夠直接訪問,因此的數值類型都是直接訪問型;

對於列表、元組、字符串,它們都具備切片操做,故都屬於序列類型

對於字典,它相似序列的索引屬性,但其索引並不使用順序的數字偏移,而是無須存放,經過一個惟一的鍵來訪問,也就是映射類型,它容納的是「哈希鍵-值」對的集合

④標準類型分類表

相關文章
相關標籤/搜索