数か月前に新しい役割を始める前、Python でプログラミングするのはとても久しぶりでした。
ちなみに、私は過去数年間、フルスタックの Javascript か、主に Javascript と少し別の言語 (最近では Go) を使用する役割で働き続けました。
だから、別の言語、特に Python のようにアクセスしやすい言語で少し筋肉を伸ばすのは楽しかったです。
私が今楽しんでいるこの言語の機能の 1 つは、@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 中国語 Web サイトの他の関連記事を参照してください。