ホームページ  >  記事  >  バックエンド開発  >  Python での関数キーワード引数の強制

Python での関数キーワード引数の強制

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-22 12:51:02727ブラウズ

Enforcement of function keyword arguments in Python

数か月前に新しい役割を始める前、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。