官术网_书友最值得收藏!

3.9 閑聊數據類型

視頻講解

所謂閑聊,也稱為gossip,就是一點小事可以聊上半天。下面就來聊一聊Python的數據類型。

在此之前可能已經聽說過,Python的變量是沒有類型的。對,沒錯,小甲魚也曾經說過,Python的變量看起來更像是名字標簽,想貼哪兒就貼哪兒。通過這個標簽,就可以輕易找到變量在內存中對應的存放位置。

但這絕不是說Python就沒有數據類型這回事兒,大家還記得'520'和520的區別嗎?

沒錯,帶了引號的,無論是雙引號還是單引號或者是三引號,都是字符串;而不帶引號的,就是數字。字符串相加稱為拼接;數字相加就會得到兩個數字的和:

     >>> '520' + '1314'
     '5201314'
     >>> 520 + 1314
     1834

Python有很多重要的數據類型,不過這里不會一下全都教給大家。因為肯定一時半會兒也沒法強記那么多(填鴨式記憶也不牢靠);其次,現在所要實踐的內容還不需要這么多的數據類型來配合。所以,控制好每個階段所學習的內容都是能夠用得上的,避免做無用功。

Python的字符串類型已經簡單講過,后面還會對字符串進行深入的探討,所以大家別吐槽小甲魚怎么都是淺嘗輒止,沒有那回事兒!我們只是分階段逐步滲透,逐層進行消化,一下講得太深入,大家消化不了,教學也會變成純理論化(小甲魚知道“死板”的模式是大家最討厭的)。

下面介紹一些Python的數值類型,如整型、浮點型、布爾類型、復數類型等。

3.9.1 整型

整型說白了就是平時所見的整數,Python 3的整型已經與長整型進行了無縫結合,現在Python 3的整型類似于Java的BigInteger類型,它的長度不受限制,如果說非要有個限制,那只限于計算機的虛擬內存總數。

所以,使用Python 3可以很容易地進行大數運算:

     >>> 149597870700 / 299792458
     499.00478383615643

3.9.2 浮點型

浮點型就是平時所說的小數,例如,圓周率3.14就是一個浮點型數據,再例如地球到太陽的距離約1.5×108km,也是一個浮點型。Python區分整型和浮點型的唯一方式,就是看有沒有小數點。

談到浮點型,就不得不說一下E記法。E記法也就是平時所說的科學計數法,用于表示特別大和特別小的數。打個比方,如果給Python提供一個非常極端的數據,那么它可能會采用E記法來表示:

     >>> a = 0.0000000000000000000025
     >>> a
     2.5e-21

對于地球到太陽的距離1.5×108km,如果轉換成米(m)的話,那就是一個非常大的數了(150 000 000 000),但是如果用E記法就是1.5e11(大寫的E或小寫的e都可以)。

其實大家應該已經發現了,這個E的意思是指數,指底數為10,E后邊的數字就是10的多少次冪。例如,15 000等于1.5×10 000,也就是1.5×104,E記法寫成1.5e4。

3.9.3 布爾類型

都說“小孩才分對錯,大人只看利弊”,其實計算機也有只講對錯的時候。在Python中,布爾類型只有True和False兩種情況,也就是英文單詞的“對”與“錯”。

例如,1 + 1 > 3,我們都知道是錯的,Python也知道:

     >>> 1+1 > 3
     False
     >>> 1+1 == 2
     True

布爾類型事實上是特殊的整型,盡管布爾類型用True和False來表示“真”與“假”,但布爾類型可以當作整數來對待,True相當于整型值1,False相當于整型值0,因此下面這些運算都是可以的(最后的例子報錯是因為False相當于0,而0不能作為除數)。

提示:

把布爾類型當成1和0來參與運算這種做法是不妥的,容易引起代碼的混亂。

3.9.4 類型轉換

接下來介紹幾個與數據類型緊密相關的函數:int()、float()和str()。

int()的作用是將一個字符串或浮點數轉換為一個整數:

     >>> a = '520'
     >>> b = int(a)
     >>> a, b
     ('520', 520)
     >>> c = 5.99
     >>> d = int(c)
     >>> c, d
     (5.99, 5)

注意:

如果是浮點數轉換為整數,Python會采取“截斷”處理,就是把小數點后的數據直接砍掉,而不是四舍五入。

float()的作用是將一個字符串或整數轉換成一個浮點數(就是小數):

     >>> a = '520'
     >>> b = float(a)
     >>> a, b
     ('520', 520.0)
     >>> c = 520
     >>> d = float(c)
     >>> c, d
     (520, 520.0)

str()的作用是將一個數或任何其他類型轉換成一個字符串:

     >>> a = 5.99
     >>> b = str(a)
     >>> b
     '5.99'
     >>> c = str(5e15)
     >>> c
     '5000000000000000.0'

3.9.5 獲得關于類型的信息

有時候可能需要判斷一個變量的數據類型,例如,程序需要從用戶那里獲取一個整數,但用戶卻輸入了一個字符串,就有可能引發一些意想不到的錯誤或導致程序崩潰。

現在告訴大家一個好消息,Python其實提供了一個函數,可以明確告訴我們變量的類型,這就是type()函數:

     >>> type('520')
     <class 'str'>
     >>> type(5.20)
     <class 'float'>
     >>> type(5e20)
     <class 'float'>
     >>> type(520)
     <class 'int'>
     >>> type(True)
     <class 'bool'>

當然,條條大路通羅馬,還有別的方法也可以實現同樣的效果。

查看Python的幫助文檔,比起type()函數,更建議使用isinstance()這個BIF來判斷變量的類型。

isinstance()函數有兩個參數:第一個是待確定類型的數據;第二個是指定一個數據類型。它會根據兩個參數返回一個布爾類型的值,True表示類型一致,False表示類型不一致。舉個例子:

     >>> a = "小甲魚"
     >>> isinstance(a, str)
     True
     >>> isinstance(520, float)
     False
     >>> isinstance(520, int)
     True
主站蜘蛛池模板: 新源县| 中江县| 兴安县| 磴口县| 淮阳县| 平凉市| 通化县| 泗洪县| 公安县| 紫云| 任丘市| 包头市| 密云县| 环江| 前郭尔| 宝鸡市| 延长县| 县级市| 黑水县| 日喀则市| 永川市| 内黄县| 怀安县| 哈巴河县| 永登县| 永顺县| 栾川县| 新和县| 筠连县| 光泽县| 成都市| 舞钢市| 宜君县| 积石山| 井冈山市| 拜城县| 广德县| 云林县| 呼伦贝尔市| 乌苏市| 镇赉县|