《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 一文了解Python中的數(shù)字類型

一文了解Python中的數(shù)字類型

2019-06-15
關(guān)鍵詞: Python Hello Long

  數(shù)字類型是不可變類型。所謂的不可變類型,指的是類型的值一旦有不同了,那么它就是一個全新的對象。數(shù)字1和2分別代表兩個不同的對象,對變量重新賦值一個數(shù)字類型,會新建一個數(shù)字對象。

  還是要強調(diào)一下Python的變量和數(shù)據(jù)類型的關(guān)系,變量只是對某個對象的引用或者說代號、名字、調(diào)用等等,變量本身沒有數(shù)據(jù)類型的概念 。只有1,[1,2],"hello"這一類對象才具有數(shù)據(jù)類型的概念。

  Python 支持三種不同的數(shù)字類型,整數(shù)、浮點數(shù)和復(fù)數(shù)。

5d01de3701d45-thumb.jpg

  整數(shù)

  通常被稱為整型,數(shù)值為正或者負,不帶小數(shù)點。python 3的整型可以當做Long類型使用,所以python 3 沒有python 2的Long類型。

  表示數(shù)字的時候,有時我們還會用八進制或十六進制來表示:

  十六進制用0x前綴和0-9,a-f表示,例如:0xff00

  八進制用0o前綴和0-7表示,例如0o45

  python的整數(shù)長度為16,32位,并且通常是連續(xù)分配內(nèi)存空間的。

2.jpg

  從上面的空間地址看,地址之間正好差16,32。

  小整數(shù)對象池

  python初始化的時候會自動建立一個小整數(shù)對象池,方便我們調(diào)用,避免后期重復(fù)生成!這是一個包含262個指向整數(shù)對象的指針數(shù)組,范圍是-5到256。也就是說比如整數(shù)10,即使我們在程序里沒有創(chuàng)建它,其實在Python后臺已經(jīng)悄悄為我們創(chuàng)建了。

  為什么要這樣呢?我們都知道,在程序運行時,包括Python后臺自己的運行環(huán)境中,會頻繁使用這一范圍內(nèi)的整數(shù),如果每需要一個,你就創(chuàng)建一個,那么無疑會增加很多開銷。創(chuàng)建一個一直存在,永不銷毀,隨用隨拿的小整數(shù)對象池,無疑是個比較實惠的做法。

3.jpg

  從id(-6)和id(257)的地址,我們能看出小整數(shù)對象池的范圍,正好是-5到256。

  除了小整數(shù)對象池,Python還有整數(shù)緩沖區(qū)的概念,也就是剛被刪除的整數(shù),不會被真正立刻刪除回收,而是在后臺緩沖一段時間,等待下一次的可能調(diào)用。

4.jpg

  上面,我給變量a賦值了整數(shù)100,看了一下它的內(nèi)存地址。然后我把a刪了,又創(chuàng)建個新變量b,依然賦值為100,再次看下b的內(nèi)存地址,和以前a存在的是一樣的。

  浮點數(shù)

  浮點數(shù)也就是小數(shù),如1.23,3.14,-9.01,等等。但是對于很大或很小的浮點數(shù),一般用科學(xué)計數(shù)法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。

  復(fù)數(shù)(complex)

  復(fù)數(shù)由實數(shù)部分和虛數(shù)部分構(gòu)成,可以用a + bj,或者complex(a,b)表示,復(fù)數(shù)的實部a和虛部b都是浮點。

  數(shù)字類型轉(zhuǎn)換

  在某些特定的情況下,我們需要對數(shù)字的類型進行轉(zhuǎn)換。python為我們提供了內(nèi)置的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)。

5.jpg

  轉(zhuǎn)換過程中如果出現(xiàn)無法轉(zhuǎn)換的對象,則會拋出異常,比如int("haha")

  數(shù)學(xué)計算

  對于數(shù)學(xué)計算,除了前面提到過的簡單的加減乘除等等,更多的科學(xué)計算需要導(dǎo)入math這個庫,它包含了絕大多數(shù)我們可能需要的科學(xué)計算函數(shù),如下表

6.jpg

  例子

7.jpg


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。