Type Hint
Type Hint 有什麼重要的 ? 因為 Python 是個動態類型語言(dynamically typed language),也就是你在寫 Function 時, 不需要指定參數是什麼型別,而是在執行階段動態被決定該參數是什麼型別,特點是動態類型檢查 (Dynamic Type Checking)、 遲綁定(Late Binding),有更大的靈活性,但是缺點是若不甚小心,常常會有 runtime exception.
在 tutorialspoint 上有個簡單例子,可以 解釋上面的概念
定義一個除法的 function, 傳入 double 或 int 都 ok 一樣的除法 function 在靜態類型語言如 c++, compile 階段會直接報錯
但傳入無法運算的錯誤型別, ex: str 沒有除的運算子,就會直接出現 runtime exception.
而 Python 3.5 以上開始支援 Type Hint,但也只是在 coding 時,call function 可以看到參數 type 的提示,你硬要傳錯誤型別的參數,他也無法阻止你,並無法像靜態語言一般 提早知道錯誤,並且必須修正錯誤才能編譯通過,產生對應執行檔。
Type Hint 於 FastAPI 上的使用
直接看 code 吧!! 定義一個 api,必須是以 /test2/{name}/{number} 的方式呼叫 其中 name 要是 str, number 要是 int 的型態
1
2
3
4
5
6
7
import uvicorn
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/test2/{name}/{number}")
async def test2(name:str, number:int):
return {"name":name, "number":number}
正確指令
http://127.0.0.1:8000/test2/kobe/24
錯誤指令
http://127.0.0.1:8000/test2/kobe/24.5
api 回傳直接會把錯誤的原因回傳
結論
Type Hint 於 FastAPI 內,可以直接對參數錯誤做處理,不需要在函式做 try catch 的錯誤判斷與處理,非常方便 !!!
BTW, tutorialspoint 是我非常喜歡的一個教學網站,它的內容精簡好讀,如果想學什麼語言或技能,可以在上面查查。