2.1 確定資料型別
有時我們不確定某個變數裡存的是什麼資料。為了搞清楚這個問題,Python 提供了一個
函式 type()
,它可以用來確定物件的型別。
這是一個內建函式,會回傳指定物件的型別,這樣在進行 debug、資料驗證,或是寫需要依靠資料型別的邏輯時會非常有用。
type()
函式的運作原理
當你呼叫 type(x)
時,Python 會回傳一個特殊的
type
物件,這個物件表示變數 x 的型別。例如:
x = 1
print(type(x)) # 顯示: <class 'int'>
x = "你好"
print(type(x)) # 顯示: <class 'str'>
x = [1, 2, 3]
print(type(x)) # 顯示: <class 'list'>
注意,回傳的結果裡會有單字 "class",這是因為即使是像 int、str、list 這些型別,它們也是 class。 只是這些 class 是內建的,Python 已經幫我們準備好了。
實際應用場景
type()
函式常用於需要根據資料型別來執行不同邏輯的情境。
- 可以根據變數型別執行對應的行為。
- 在函式或方法中,確保傳入參數的型別正確。
如果你想確認某個變數裡的是數字,可以寫類似以下的程式碼:
arg = 123
if type(arg) == int:
print(arg + 10) # 顯示: 133
再舉個更實用的案例,當我們想確認變數裡資料型別時:
arg = "123"
if type(arg) == int:
print(arg + 10) # 這行不會執行,因為 arg 是字串
elif type(arg) == str:
print(arg + " world") # 顯示: 123 world
else:
print("未知的型別")
2.2 明確指定型別
在 Python 中,明確指定物件的型別可以用型別轉換函式,例如 int()
、float()
、
str()
、tuple()
,以及其他函式。這些函式讓我們可以把某種型別的資料轉換成其他型別,
對處理使用者輸入、數學運算、處理字串或資料集合時相當有幫助。
型別轉換函式的範例
int()
: 把資料轉成整數。這函式很常見,傳入一個數字字串就會轉成對應的整數。
num = int("123") # num 會是整數 123
float()
: 同樣是很熟悉的函式,把資料轉成浮點數。
num = float("123.45") # num 會是 123.45
str()
: 把任何 Python 物件轉成字串。
s = str(10.5) # s 會是 '10.5'
tuple()
: 把序列轉成元組。
t = tuple([1, 2, 3]) # t 會是 (1, 2, 3)
list()
: 把可迭代物件(像是字串或元組)轉成列表。可迭代物件是指可以被一個一個遍歷的物件,例如字串、列表、元組。
l = list("abc") # l 會是 ['a', 'b', 'c']
dict()
: 從鍵值對序列創建字典。
d = dict([(1, 'a'), (2, 'b')]) # d 會是 {1: 'a', 2: 'b'}
至於字典和元組,我們之後會詳細講,但希望這些範例能幫助你理解:當你需要特定型別時,可以放心使用上面提到的這些函式。
2.3 型別轉換
在 Python 中,明確型別轉換(也叫型別強制)允許開發者控制並更改變數的資料型別。這對於確保資料在不同操作中的相容性, 或修正來自使用者輸入或檔案中的資料型別特別有用。基本上,型別轉換和型別強制意思是一樣的,它們指的都是把資料型別轉成另一種型別的過程。
我們對明確型別強制應該已經有點了解了。在 Python 中,可以透過內建函式像是 int()
、float()
、str()
、
tuple()
、list()
、dict()
、set()
等來操作。
讓我們再看幾個範例來理解:
函式 | 描述 | 輸入範例 | 輸出範例 |
---|---|---|---|
int() |
轉換成整數 | int("10") | 10 |
float() |
轉換成浮點數 | float("20.5") | 20.5 |
str() |
轉換成字串 | str(15) | "15" |
tuple() |
轉換成元組 | tuple([1, 2, 3]) | (1, 2, 3) |
list() |
轉換成列表 | list("abc") | ['a', 'b', 'c'] |
dict() |
從鍵值對創建字典 | dict([(1, 'one'), (2, 'two')]) | {1: 'one', 2: 'two'} |
set() |
從列表創建集合 | set([1, 1, 2, 2, 3, 3]) | {1, 2, 3} |
應用案例
明確型別強制在很多場景下都會出現,例如:
- 處理使用者輸入: 確保輸入的資料是符合預期型別的。
- 資料相容性: 當從不同來源或 API 得到的資料需要結合或比較時。
- 錯誤處理: 在執行操作之前,先將資料轉成對應的型別以避免運行時錯誤。
最佳實踐與注意事項
明確型別轉換應謹慎使用,以免資料遺失(例如,轉換 float
成
int
時)或轉換失敗(例如,嘗試將非數字字串轉成數字)。
另外要記得,有些轉換可能會不太直觀,甚至得到意想不到的結果,因此需要特別注意資料檢查。
例如,int
和 bool
之間的轉換可能會讓人有點摸不著頭緒 :)
GO TO FULL VERSION