何謂Type Hint?
Python之所以會很推薦是入門語言的關係,是因為它不像C語言這種靜態語言,需要明確定義變數的資料型態,像是int(整數)、string(字串)、dict(字典),當你要讓第一行程式碼啟動時,你需要先搞懂基礎的資料型態,才能執行顯示文字出來的功能,在新手入門階段增加了一點門檻,故現在較推薦初學者學的第一個語言為Python這種動態語言。
但當我逐漸對Python有越來越深刻的認識,撰寫大大小小的程式專案,我發現動態語言的好處在於不用定義變數就能使用,但壞處也是我會一直遇到Bug或Error卡在一些特殊的變數上,特別是我有用模組的情況下,更容易「誤解」變數的資料型態,例如我今天以為這個變數是數值,所以拿去做運算,但實際上此變數只是字串型態,不可以做運算,就會發生錯誤。
# 簡單的加法運算,使用型別註解
def add_numbers(a: int, b: int) -> int:
return a + b
result = add_numbers(5, "3") # 這裡會發生錯誤
print("Sum:", result)
如何撰寫Type Hint?
因此建議在Python中撰寫到一定的程度後,可以嘗試看看加入Type hint,能協助你在開發程式的過程中,確認變數的型態,在撰寫程式時減少遇到Error的機會,而Type hint的基礎寫法就是在變數後面加入「:」來表示它的變數型態。
而在定義函數後面加入「->」再加上變數類別,代表那個函數return會是哪一種資料類別。以上面的程式碼作為範例,在「add_numbers」函數結束後,返回的資料型態為整數(int)。
a = 1
b = 2
print(a+b)
#=================
# 有Type Hint
a: int = 1
b: int = 2
print(a+b) # output 2
關於Type hint的相關文章
網路上其實對於Type hint的教學文章有蠻多的,在這邊提供當年對我很有用的幾個網站供你學習和參考。
入門的Type hint教學:Python Type Hints 教學:我犯過的 3 個菜鳥錯誤
另外當年困擾我很久在Type Hint中的AnyType和Optional用法,我覺得這幾個網站有幫助我理解。
Any Type(定義宣告為任意數值都可輸入):https://docs.python.org/3/library/typing.html#the-any-type
Optional(代表這個變數是可選擇性輸入的,可以選擇不輸入該變數):「型態提示、重載與Optional」、「Stack Overflow: How should I use the Optional type hint?」