ホームページ  >  記事  >  バックエンド開発  >  Python でデフォルト引数の後にデフォルト以外の引数を宣言するのはなぜ違法ですか?

Python でデフォルト引数の後にデフォルト以外の引数を宣言するのはなぜ違法ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 18:09:30846ブラウズ

Why is it Illegal to Declare Non-Default Arguments After Default Arguments in Python?

デフォルト引数の後にデフォルト以外の引数を宣言するのはなぜ違法ですか?

Python では、引数の正しい順序に従うことが重要です関数を定義するとき。デフォルト以外の引数は、デフォルトの引数よりも前に指定する必要があります。この制約は、必須のパラメータをオプションのパラメータ (デフォルトの引数) の前に指定する必要があるという事実から生じています。

SyntaxError: Non-Default Argument Follows Default Argument

このエラーが発生します次の例のように、デフォルト引数の後にデフォルト以外の引数を持つ関数を宣言する場合:

<code class="python">def fun1(a="who is you", b="True", x, y):
    print(a, b, x, y)</code>

予期しない代入の問題

デフォルトとデフォルト以外の組み合わせ引数は構文の曖昧さにつながります。上記の関数を使用した関数呼び出しを考えてみましょう。

<code class="python">func1("ok a", "ok b", 1)  # Is 1 assigned to x or a?
func1(1)                  # Is 1 assigned to a or x?
func1(1, 2)               # Which arguments are mapped to which parameters?</code>

そのような場合、インタプリタが適切な割り当てを決定することは不可能です。

O'Reilly - Core-Python への参照

O'Reilly - Core-Python に従って、関数定義内のすべての必須パラメーターはデフォルトの引数よりも前にある必要があります。これにより、必要なパラメーターの最小限のセットで関数を呼び出すことができます。

キーワード引数の呼び出し

キーワード引数では、順序が正しくない位置引数が許可され、スキップできます。デフォルトの引数と組み合わせて使用​​した場合、欠落している引数を上書きします。たとえば、キーワード引数を使用した次の関数呼び出しは構文的に正しいです:

<code class="python">def fun1(x, y, a="who is you", b="True"):
    print(a, b, x, y)

# Call with keyword arguments
fun1(4, y=5, a="Python is awesome")</code>

結論

SyntaxError を回避し、引数をパラメーターに割り当てる論理フローを維持するには、次のようにします。関数定義内の引数の適切な配置を覚えておくことが重要です。オプションのパラメータ (デフォルトの引数) の前に、必ず必須のパラメータ (デフォルト以外の引数) を宣言します。

以上がPython でデフォルト引数の後にデフォルト以外の引数を宣言するのはなぜ違法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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