- 零基礎入門學習Python(第2版)
- 小甲魚
- 1716字
- 2019-12-20 12:19:33
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