天天看點

淺談Python内置對象類型——數字篇(附py2和py3的差別之一)

Python是一門面向對象的程式設計設計語言,程式中每一樣東西都可以視為一個對象。Python内置對象可以分為簡單類型和容器類型,簡單類型主要是數值型資料,而容器類型是可以包含其他對象類型的集體,如序列、元組、映射等。

在簡單類型對象中,Python的數值資料包括整型(int)、長整型(long)、浮點型(float)、複數(complex)及布爾型(bool)等。在容器類型對象中,序列是指元素按順序存儲的一類對象,主要包括字元串(string)、清單(list)、元組(tuple)等類型。映射是通過鍵來通路值的一種結構,Python中唯一的映射結構就是字典(dict)對象。除了簡單類型和容器類型對象之外,還有一種特殊的對象為None,是指空對象。

所有的對象都有資料屬性和内置的方法。對象的方法就是我們經常說的函數,用于執行操作,作用于對象上。對象的屬性和方法都可以通過點操作符(.)來調用。

今天小編就帶大家了解一下Python内置對象中的簡單類型對象,即數字類型。Python中的數值可以是各種數,包括整數、長整數、浮點數、複數、布爾類型數等等。前天小編寫了一篇文章,關于如何在互動式環境中執行Python程式,下圖是部分執行個體,先感受一下數字類型對象。

淺談Python内置對象類型——數字篇(附py2和py3的差別之一)

一、常量

Python中的數字常量支援多種格式,我們常見的常量是整型和浮點型。其實Python中也支援科學計數法,常常用科學計數法來表示浮點數,如1.2e-3或1.2E-3表示1.2*10的-3次方。除了預設的十進制數之外,還可以使用二進制、八進制、十六進制來表示常數,不過要在這些數字前邊添加字首以便和十進制數進行區分,二進制、八進制、十六進制的字首分别是0b、0、0x。Python中的數字常量還支援複數和分數形式,但是在分數運算的時候有個地方需要注意,看下圖的例子。

py2版本中的分數運算

py3版本中的分數運算

小夥伴是不是感覺到有點兒懵逼?在py2中整數除法運算的結果仍然為整數,是取整,而不是四舍五入噢。當參與運算的數中有一個為浮點數的時候,Python會自動将另一個數字隐性的轉換為浮點數,是以在第二個運算中得到的結果為浮點數。在py3中,除法的意義就和我們平時見到的除法是一緻的了,而不是取整。換句話說,除法的除數和被除數在py3中都先做了浮點數轉換,然後相除,最終得到的商是浮點數。

Python的運算中還有雙斜杠//,也是代表除法,這個除法可以得到最大整數商,這種除法模式也叫floor除法。在py2中就支援這種模式,當兩個整數相除,結果隻得到商的整數部分。%代表取餘運算符,可以得到餘數部分。如下圖所示:

floor除法和取餘運算

二、分數

分數包括分子和分母兩個部分。在Python中,函數Fraction(x, y)表示分數x/y。在使用該函數之前,需要導入分數子產品fractions,分數建構之後,就可以在表達式中使用了。當然,也可以将浮點數字元串轉換為分數,如下圖所示:

分數Fraction函數運算

三、布爾型

布爾型對象隻有兩個值,即對(True)和錯(False)。對于空資料類型,其布爾值均為False。一般來說,布爾型數值用在條件判斷中比較多,其通常會作為程式的分支或者循環的測試條件來使用。

四、複數

複數是由有理數部分和無理數部分構成。其中有理數部分稱為實部,該部分可有可無;而無理數部分稱為虛部,該部分是必需需要的,虛部的字尾一般用j或者J表示。複數也支援常數中的四則運算等,複數之間運作的結果仍為複數,如下圖所示:

複數中的四則運算

數字是最基本的數值類型,不論哪種程式設計語言都離不開它。希望小夥伴們都好好掌握,在分數運算部分尤其要注意掌握py2和py3版本中的不同,這個知識點在面試題中經常會碰到,其實這個部分也算是兩個版本的差別之一。