Python基礎學習:內置類型(1)

Python中基本內置類型由數字、序列、映射、類、實例和例外。一些集合類是可變的,因此那些可以增添、刪除或排列這些類的方法不會奏效,只會返回None,用來示意函數調用者邏輯上的錯誤。但同時,幾乎所有操作都支持幾種典型的函數操作,比如說:比較、真值測試以及用str()或repr()函數轉化爲字符串。總而言之,瞭解Python內置的類型有助於編程者使用這門語言進行各類開發測試工作。

1.真值測試

       所有的對象都支持真值測試,真值測試可以使用if或while語句,也可以使用布爾操作符進行。該語言默認,一個對象應該具有True的屬性,除非該類在被調用時使用__bool__()方法返回了False或者使用__len__()方法返回了數字0。一般來講,以下的內置對象唄認爲具有False屬性:

(1)被定義具有False屬性的常量:None與False;

(2)任何數字類型中的0:0,0.0,0j,Decimal(0),Fraction(0);

(3)空的序列或集合:’’,(),[],{},set(),range(0)。

       操作和內置函數通常返回0或False表示其具有False屬性,返回1或True表示其具有True屬性。但有一個及其重要的例外:布爾操作中的or和and總是返回它們自己所有的一個操作數以表明自己的布爾屬性。

2.布爾操作:and、or與not

操作

實現流程

x or y

如果x是真,直接返回x;

如果x是假,返回y(結合上文思考)

x and y

如果x爲真,返回y;

如果x爲假,直接返回x。

not x

如果x爲假,返回False;

如果x爲真,返回True。

       not是一個低優先級的操作(優先級低於非布爾操作),例如:not x==y 語句等價於 not (x==y),並且x == not y 這個用法會導致索引錯誤。

3.比較

       Python中有八種比較操作,這些比較操作具有相同的優先級。,下表列出具體的操作符號:

操作

操作含義

嚴格小於

<=

小於或等於

嚴格大於

>=

大於或等於

==

等於

!=

不等於

is

對象身份比較

is not

忽略對象身份

       除了不同類型的數字外,其它類型的對象永遠不會相等。此外,某些類型(例如函數對象)僅支持簡單的比較概念,即任何兩種類型的對象都不相等。這些比較操作會在其比較兩個不同類的對象時拋出TypeError錯誤。is和not操作符的行爲是不可定製的;它們也可以應用於任何兩個對象,並且不會引發異常。

       in和not in這兩個僅用於序列對象的操作與這些比較操作擁有相同的優先級。

4.數字類型——int、float與complex

       數字類型有三個下級分支:整數,浮點數和複數。需要指出的是,布爾數是一個整數的子類型。整數具有無限精度,也就是說在Python中不限制整數的位數。浮點數通常在C中使用double實現;複數有一個實部和虛部,每個部分都是一個浮點數。要從複數z中提取這些零件,請使用z.real和z.imag。(標準庫包含其他數字類型,保留有理數的分數以及用戶可定義的精度保存浮點數的小數。)

       數字由數字文字或內置函數和運算符的結果創建。未經修飾的整數文字(包括十六進制,八進制和二進制數字)將產生整數。包含小數點或指數符號的數字文字會生成浮點數字。將'j'或'J'附加到數字字面上會得到一個虛數(一個具有零實數部分的複數),您可以將其添加到整數或浮點數以獲得具有實部和虛部的複數。

       下表列出數字類型支持的操作:

操作

結果

x + y

x與y的和

x – y

x減y的差

x * y

x乘y的積

x / y

x除y的商

x // y

x除y的商向下求整

x % y

x除y的餘數

-x

非x

+x

x不變

abs(x)

x的絕對值

int(x)

將x轉化爲整型數

float(x)

將x轉化爲浮點數

complex(re,im)

re爲複數的實部,im爲複數的虛部

c.conjugate()

數字c的共軛數

divmod(x, y)

等價於(x//y, x%y)

pow(x, y)

等價於x^y

x ** y

等價於x^y

       所有的實數類數字(整型和浮點數)都支持下述操作:

操作

結果

math.trunc(x)

把x截斷爲整型數

round(x[, n])

x四捨五入爲n位數,四捨五入最後一位爲偶數。如果省略n,則默認爲0。

math.floor(x)

小於等於x的最大整數

math.ceil(x)

大於等於x的最小整數

       math和cmath模塊內由豐富的數字操作函數。

4.1 整數類型的按位運算

       位操作僅對整型數敏感。位操作中,負數等價於它的補碼值(假定有足夠的位數以便在操作期間不發生溢出)。位操作的優先值高於所有的比較操作,但低於所有的數學操作。但是,~的優先級與+與-這兩個數學操作的優先級相同。下表以升序優先級列出了所有位操作:

操作

結果

x | y

x與y按位或

x ^ y

x與y按位異或

x & y

x與y按位與

x << n

x左移n位

x >> n

x右移n位

^x

x按位非

4.2 整型數的額外方法

int.bit_length()

       返回表示二進制整數所需的位數,不包括符號和前導零

int.to_bytes(length, byteorder, *,signed=False)

       返回表示整數的字節數組。

classmethod int.from_bytes(bytes,byteorder, *, signed=False)

       返回給定字節數組所表示的整數。

4.3 浮點數的額外方法

float. as_integer_ratio()

       返回一對整數,其比例與原始浮點數完全相等,並帶有一個正的分母。

float. is_integer()

       如果float實例是有限整數值,則返回True,否則返回False.

float. hex()

       將浮點數的表示形式返回爲十六進制字符串。對於有限的浮點數,這種表示將始終包       含一個前導0x和一個尾隨p和指數。

classmethod float. fromhex(s)

       返回由十六進制字符串s表示的float。

4.4 散列數字類型(哈希數)

       對於可能具有不同類型的數字x和y,只要x == y,就需要hash(x)== hash(y)。 爲了便於跨多種數字類型(包括int,float,decimal.Decimal和fractions.Fraction)的實現和效率,Python的數字類型哈希基於爲任何有理數定義的單個數學函數,因此適用於所有 int和fractions.Fraction的實例,以及所有有限的float和decimal.Decimal實例。 從本質上講,這個函數是通過對一個固定素數P減模P給出的.P的值可作爲sys.hash_info的模特屬性提供給Python。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章