標題圖片

[python筆記] 5.資料型別 – int、float、bool

前言:

終於進入《學習一個新的程式語言的過程(下)》的部分,快速回顧一下裡面的部份,之後我們要來看資料型別、語言的一些預設與習慣、錯誤訊息、函數與模組 跟 註解。

資料型別如同《學習一個新的程式語言的過程(下)》裡說的,會以單資料型別、多資料型別來介紹python本身擁有的最基礎的型別。
為什麼要介紹 python 最基礎的型別呢?什麼又算是最基礎的型別?
因為 python 作為物件導向語言,其實所有的型別都是「物件」,不過為了讓 python 執行順利,python 語言最初就定義好了一些型別提供使用,因此就不需要另外自行去為資料定義型別,這就是最基礎的型別。為了區別,就將python本身已有的型別(不需要額外自定義的型別)拿出來,來了解 python 對資料的應用。

這篇文章介紹 python 的單資料型別 – int、float、bool。

閱讀時間:8 分鐘

單資料型別、多資料型別

開始前,再老生常談一次單資料型別與多資料型別的差異,簡單的區分方式為單資料型別僅有一個資料,而多資料型別是數個資料的集合,只有多資料型別才能執行迴圈使用for… in…指令。

那麼,”hello, world!” 字串(string)型別,是屬於單資料型別還是多資料型別呢?
乍看之下,會覺得 “hello, world!” 就是一組單純的文字資料,其實在 python 裡,字串被認為是複數資料型別,由 “h”、”e”、”l”、”l”、”o”、”,”、” “、”w”、… 組成。

是的!要注意在程式裡面,空白格也是一個資料,更不用說作為符號的標點符號了。
簡單的跑一個迴圈程式,就能了解。

a="hello, world!"
for i in a:
    print(i)

資料型別 – int

int 型別完整的意思是 Integer ,整數的意思,所以這個資料型別下的資料,只可以作為整數使用,系統也只會將它看作整數,且是十進位的整數。
例如:1, 2, 100, 10000, 123456789

python 給予 int 型別一些預設的函式,你可以使用(通常很少用,可以不看):

  • bin(num):將 num 從 int 轉換成二進位數字的表示方式,回傳的型別是 string。
  • oct(num):將 num 從 int 轉換成八進位數字的表示方式,回傳的型別是 string。
  • hex(num):將 num 從 int 轉換成十六進位數字的表示方式,回傳的型別是 string。
  • int(s, base):提供字串 s 以及 base 進位方法,將資料轉換為十進位數字,回傳的型別是 int。

資料型別 – float

float 型別是浮點數的意思,直觀且簡單的可以認為是小數的表示型態,這個資料型別下的資料,只可以作為浮點數使用。
要滿足浮點數的條件,你需要有一個整數、小數點、以及小數點後的數,這三個都是必要的資料。
例如:1.0, 2.5, 100.0001

1.0 與 1 有什麼不同?在現實生活中,我們會將他們視為同一個意思,但是在程式語言裡,這兩個資料有不同的編碼方式,這也就意味他們是不同的。
在某些程式語言中,你無法計算1/2 = 0.5,因為只有 1.0 作為 float 輸入,才能夠得到 0.5 的 float 輸出結果。
有趣的是,1/2 = 0.5是可以在 python 中做到的。

python 也給予 float 型別一些預設的函式,你可以使用:

  • f.hex():將 f 從 float 轉換成十六進位數字的表示方式,回傳的型別是 string。
  • is_integer():判斷浮點數小數點後是否為全0,回傳型態為boolean
  • round(x,n):x為浮點數,n為小數點後n位,回傳型態為float

你可能發現 hex() 不只用在 int 也可以用在 float,但注意看又會發現它們不太一樣。
這是因為 f.hex() 是將 float 視為一個物件來使用了。(未來會在物件的部分進行補充)

資料型別 – bool

bool 型別完整的意思是 boolean,是 True/False 的意思,換句話說,這個型別提供了判斷式對與錯的來源,中文會翻譯成 「布林值」。

說到判斷式,python有個有趣的特色,除了 False 資料可以判斷為錯以外,0 與 空值(“”) 也能夠判斷為錯。

資料型別的使用

這邊補充 python 資料型別的運作邏輯,每個語言都有自己型別的運作方式。

python 運作的策略是「標籤」。什麼意思是標籤呢?思考 a=2 的過程為例子。

以往的語言(例如:C語言)在使用記憶體的邏輯大概是這樣的:

  • 獲得一個自由空間,將該空間視為 a
  • 將資料 2 放入該空間

而 python 的方式稍有不同:

  • 獲得一個自由空間,將資料 2 放入該空間
  • 將 a 作為一個標籤貼在這個空間上

那這兩種做法有什麼不同呢?
第一種做法的空間是與 a 綁定的,因此當你再執行b = a的時候,將會是額外獲得 b 空間並放入 2 的資訊。
第二種做法的空間是與 資料 綁定的,因此當執行b = a的時候,則會是在該空間上,再貼上 b 的標籤,於是這個空間就有了 a 與 b 的標籤。
結果而言,第一種做法使用了兩個空間,而第二種做法只有一個空間。

結語

資料型別絕對是程式語言裡重要的部分,且也是有許多眉眉角角的地方。
接下來就進入 資料型別 – object 的部分,同時這也是 python 的一個特性「萬物皆物件」,換句話說,所以的資料型別其實都是物件的衍伸,不懂沒關係,我們繼續看下去。

This article was written by 好想射射>///<. Any similarities to other works are purely coincidental.

我們是 Be Good Tool
團隊由幾位工程師、設計師與PM組成
專注開發各種免費網站工具和推廣優質的APP
歡迎到我們的線上工具列表看看喔!