Python 中函數關鍵字參數的強制執行

Patricia Arquette
發布: 2024-10-22 12:51:02
原創
813 人瀏覽過

Enforcement of function keyword arguments in Python

幾個月前開始擔任新角色之前,距離我使用 Python 程式設計已經非常很長一段時間了。

順便說一句,在過去的幾年裡,我一直在從事涉及全端 Javascript 或主要是 Javascript 並帶有一點其他語言(最近是 Go)的角色。

因此,使用不同的語言來伸展我的肌肉是很有趣的,尤其是像 Python 這樣易於訪問的語言。

我現在喜歡的語言的一個功能是使用 @dataclass 裝飾器中可存取的 kw_only 屬性對函數強制執行關鍵字參數。

它產生的程式碼如下所示:

from dataclasses import dataclass

@dataclass(kw_only=True)
class Person:
    name: str
    age: int
    city: str

person1 = Person("Alice", 30, "New York")
登入後複製

引發錯誤,因為使用 kw_only 預計會看到類似以下內容:

from dataclasses import dataclass

@dataclass(kw_only=True)
class Person:
    name: str
    age: int
    city: str = "Unknown"

person1 = Person(name="Alice", age=30, city="New York")
登入後複製

雖然引發了錯誤:

TypeError     

Traceback (most recent call last)
Cell In[8], line 10
      7     city: str = "Unknown"

---> 10 person1 = Person("Alice", 30, "New York")

TypeError: Person.__init__() takes 1 positional argument but 4 were given
登入後複製

是“明確的”,因為它會向您表明提供了太多的位置參數,如果您不熟悉 kw_only ,它可能會有點令人費解,因為它看起來您正在正確調用該函數。

如果你像我一樣有Javascript/Typescript 的背景,或者以前有使用Go 或Rust 等語言的經驗,這些語言使用結構之類的東西來強制執行此操作,在結構中你可以按照你喜歡的任何順序提供參數,只要由於屬性遵循物件/結構的形狀,因此這會讓人感覺很熟悉,並且可能是您的Python 程式碼中受歡迎的補充。

如果您正在使用大量參數(其中一些參數可能是可選的),這尤其有用。

以上是Python 中函數關鍵字參數的強制執行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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