幾個月前開始擔任新角色之前,距離我使用 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中文網其他相關文章!