Python
type
• Definition (定義)
• Implicit Type Conversion (隱式轉換)
• Boolean V.S Integer
• Integer V.S Floating-Point
• Explicit Type Conversion (顯式轉換)
• int() (整數)
• float() (浮點數)
• bool() (布林值)
• str() (字串)
什麼是型態轉換呢?
型態轉換就是我們將資料的型態從其中一種轉換為其他型態的過程,也被稱為Type-Conversion。
所以我們可以認為
型態轉換是我們在進行資料處理時很常使用的功能。
甚麼是隱式轉換呢?
基本上這種轉換出現在數值型態當中,就像我們上一篇講到的,數值型態有三種,分別是: 整數、浮點數、布林值。
而他們的值的範圍大小如下顯示:
boolean –-> integer –-> floating-point
small <–––––––––––––-> large
從上面可以看出
所以我們可以知道floating-point的範圍 > integer的範圍 > boolean的範圍。
因此當不同型態的資料在做運算時,範圍小的型態會隱式轉型成範圍較大的型態,而結果也會以範圍較大的型態顯示。
以下為範例:
在上述的例子中,我們將boolean和integer做加法,而運算的過程如下:
這邊有一個很重要的觀念,就是當boolean在轉換成數值的時候有一個規則:
在轉換boolean的時候要特別注意,True在轉換時只會變成1,而False只會變成0。
再舉一個例子:
這就是boolean和integer間的隱式轉換。
以下為範例:
在上述的例子中,我們將integer和floating-point做加法,而運算的過程如下:
這邊有一個之前提過的很重要的觀念:
只要有小數點即是floating-point
因此我們可以看出來integer會先轉型成floating-point再做相加,而結果也會是floating-point的型態。
再舉一個例子:
現在你們已經了解boolean、integer還有floating-point之間的隱式轉換了。
因此我們可以看出隱式轉換的幾個重點
No. | Rules |
---|---|
1 | 浮點數 > 整數 > 布林值 |
2 | 運算結果以最大範圍型態表示 |
甚麼是顯式轉換呢?
基本上這種轉換就是我們使用函式指定資料說要轉換成甚麼型態。
這邊有幾個函式可以用:
具體示範如下:
從上面得結果我們可以得到結果為整數型態。
在上述的例子中,我們將integer和經過轉型的floating-point做加法,而運算的過程如下:
我們可以知道int()可以將值轉換為整數,且小數點部分為無條件捨去。
而int()其實是可以接收兩個參數,第一個參數放的是要轉換的值,他可以是使用不同進位法表示的,而第二個參數代表了前面放入要轉換的值所使用的進位法。
具體示範如下:
上面兩種方法都可以產生一樣的結果,甚麼意思呢?
在第一行我們有一個"100"的字串,我指定他的base為2,就是說我希望int()可以將"100"當作二進位來解讀,再把結果轉換成十進位輸出。
而第二行的base為0,代表讓int()從字串去判斷它的進位法,所以這個時候我們就不能把"0b"省略掉,否則他會將其當作十進位直接輸出100。
當然我們也不一定要使用常見的進位法來當作base,舉例來說:
在上述的程式碼中,我將base定為5,他就會將100視為五進位,然後同樣轉換再進行輸出。
base 可接受的範圍是 0 和 2~36
如果不知道怎麼轉換進位可以看我的IG貼文:
具體示範如下:
從上面得結果我們可以得到結果為浮點數型態。
在上述的例子中,我們將integer和經過轉型的string做加法,而運算的過程如下:
我們可以知道float()可以將值轉換為浮點數。
這邊有一個重點是關於string的轉換,一個字串是不能和數值做運算的,所以我們要先把它轉換成integer或是floating-point才能做運算。
具體示範如下:
從上面各個結果我們可以得到以下結論:
bool()可以將任何值轉換成布林值的型態,只要其中的值不為0或是空,它就會轉換為True,反之為False。
因此要特別注意的是空字串也會視為False
具體示範如下:
從上面的結果我們可以得到以下結論:
str()可以將任何值轉換成字串的型態,而數值和字串本不能相加,如果要拿數值和字串做連接的話就必須把數值先轉換為字串型態再做連接。
如果有興趣了解更多歡迎追蹤我的
Intagram
Youtube
Github
也可以幫我按個讚賞喔