首頁 > 後端開發 > Python教學 > 在 Python 中註解函數

在 Python 中註解函數

Mary-Kate Olsen
發布: 2024-12-27 20:36:11
原創
740 人瀏覽過

Annotating Functions in Python

我最近剛發布了一篇關於在 Typescript 中註解函數的部落格。我剛剛完成了一些研究,並了解了更多關於如何在 Python 中註釋函數的知識,本博客將主要介紹使用與 上一篇博客類似的示例來註釋 Python 函數。

您可以透過將 python.analysis.typeCheckingMode 設定為 basic、standard、strict 之一來驗證 Visual Studio Code 中的類型註解。 basic 和 standard 選項不一定能確保您註解函數和變量,但 strict 可以。

功能值

這可能會讓您感到震驚,但您可以在 Python 中傳回函數並將函數作為值傳遞。回調函數實際上是使用 Callable 類型進行註解的,其寫法如下;

例如,一個函數 length(text: str) -> int 將被註解為 Callable[[str], int]

例如;

JavaScript 中的此函數

在Python中可以這樣寫

我們可以建立一個名為 number 的 TypeAlias,它是 int 和 float 的聯合(字面意思),例如;

將參數視為JavaScript 數字.

因此,要註解這個函數,我們有;

通用函數

經典的泛型函數範例是

使用 TypeVar 我們現在可以建立通用詳細資訊(比 typescript 更詳細)。

這樣我們就有

那麼自訂 myMap 函數怎麼樣,它的作用類似於 JavaScript 中的地圖。這樣我們就有了;

記住:Python中的map()回傳的是Iterable類型而不是List型別

我們可以混合使用 Callable 和 TypeVar 類型來註解這個函數。 觀察...

或者我們可以別名 Callable 函數

觀察 MappableFunction 接受這些泛型類型輸入和輸出並將它們應用到 Callable[[Input], Output] 的上下文中。

花點時間想想 myFilter 函數會如何註解?

好吧,如果你想到了這個

你說得對

通用類別

我知道我不應該談論類別註釋,但請給我一些時間來解釋泛型類別。

如果您來自Typescript詩句,這就是您定義它們的方式

但在 Python 中它們卻相當不同且尷尬。

  • 首先我們匯入 Generic 類型,然後讓它們成為 Generic 類別的子類別

因此要在 Python 中重新建立這個 GenericStore 類別

為什麼我應該學習如何在 Python 中註解函數?

正如我在上一篇部落格中所說,它有助於建立更聰明的類型系統,從而減少出現錯誤的機會(特別是在使用mypy 等靜態文件檢查器時) 。此外,當使用強大的類型系統編寫庫(或SDK)時,可以大幅提高使用該庫的開發人員的工作效率(主要是因為編輯器的建議

如果您有任何疑問或本文中存在錯誤,請隨時在下面的評論中分享⭐

以上是在 Python 中註解函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板