我們都知道 Python 是一個動態的語言,代表每一個 variable 是什麼型別是在 runtime 的時候決定的,雖然很靈活可是當 code 量級上去之後因爲類型不正確引發的錯誤也會逐漸增加。但 Python 也是可以做到型別要求的,就是使用 「 Type Hint 」 或者叫 「 Type Annotation 」,中文稱呼蠻多種的例如「型別標註」、「型別提示」等等。 若有寫 Type Hint 的話,比較現代的 IDE 都會有一些自動顯示或補全輔助 :

Python 的 Type Hint 是從3.5開始萌芽逐漸引入直到現在,故有一些發展的歷史脈絡和演變,有一些寫法也漸漸更替,故簡單介紹和分析一下。

Continue reading

Python 的 Coroutine 發展已經逐漸穩定成熟,已經成為了提升 Python 程式效能的優秀解決方案之一,在之前簡單介紹 Coroutine 和 await/async 時,我們在範例 code 中一直有用到一個 Python buildin 模組 asyncio,它提供了一套完整的工具和接口,用於建立非同步應用程式,其核心是 Event-Loop,會追蹤所有註冊的任務,並根據任務的狀態調度它們的執行。 故接著來了解 Event-Loop 和其工作的執行單位 Task 吧 !

Continue reading

之前有介紹了 Asynchronous ,而 Python 的 Coroutine 是實現 Asynchronous 的一種設計方式,且 Python 目前已經有非常直觀簡單的語法糖來定義 Asynchronous Code,使得程式寫起來就像普通的 「 Sequential Processing 順序執行 」任務那樣,但同時卻也可以對目標函數標註做「等待」的動作,並在「等待」期間可以先去做其他任務,達成非同步的功效,提高程式的並發性,而其重要的關鍵字就是 :

  • async : 用來宣告 function 能夠有異步的功能成為 Coroutine function
  • await : 用來標記 Coroutine 切換暫停和繼續的位置

而這兩個關鍵字是在 Python3.5 引入且在 Python3.7 成為保留關鍵字。它們在著名的 FastAPI 框架下的 path operation function 下也經常使用,接下來就簡單介紹一下吧。

Continue reading

Author's picture

李昀陽 YunYang Lee

Welcome to my Tech Note. You can read some of the chapters below.

Software Engineer

Taiwan