ホームページ  >  記事  >  バックエンド開発  >  Python 関数でデフォルト以外の引数をデフォルトの引数の後に続けることができないのはなぜですか?

Python 関数でデフォルト以外の引数をデフォルトの引数の後に続けることができないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 00:38:03882ブラウズ

Why Can't Non-Default Arguments Follow Default Arguments in Python Functions?

引数の順序付けにおける構文エラーを理解する

Python で関数を定義する場合、デフォルトの引数の配置には厳密なルールがあります。この記事では、関数定義でデフォルト以外の引数をデフォルト引数の後に続けることができない理由について説明します。

Python の構文によれば、すべての必須パラメータはデフォルト パラメータの前に置く必要があります。これは、デフォルトの引数が関数呼び出し中に省略できるオプションの値を表すためです。混合モードが許可されると、インタプリタは構文の曖昧さに遭遇することになります。たとえば、次の関数について考えてみましょう。

def fun1(a="who is you", b="True", x, y):
    print(a, b, x, y)

この宣言では、関数は 4 つの引数を受け入れ、最初の 2 つはデフォルト値を持ちます。ただし、「a」と「b」の前に「x」と「y」を置くと混乱が生じます。 'x' と 'y' が順序どおりに提供されなかった場合、インタプリタはどの値に対応するかをどのように判断しますか?

この問題を解決するために、デフォルト以外の引数がデフォルトの引数の後に続いた場合、Python は SyntaxError を発生させます。このルールを強制することにより、インタプリタは引数の割り当てに曖昧さが存在しないことを保証します。

対照的に、関数を次のように定義すると、

def fun1(x, y, a="who is you", b="True"):
    print(a, b, x, y)

ここでは、'x' と ' y' は必須パラメータになり、'a' と 'b' にはデフォルト値が設定されます。この順序により、通常の位置呼び出しまたはキーワード引数の両方を曖昧さなく呼び出すことができます。

キーワード引数では、順序が正しくない、または欠落している引数の割り当てが可能です。ただし、デフォルトの引数と組み合わせて使用​​すると、欠落している引数を「スキップ」するために使用することもできます。たとえば、最後の関数定義では、次のように呼び出すことができます:

fun1(1, a="ok") # Skips 'y' and assigns '1' to 'x'
fun1(1, b="ok") # Skips 'y' and 'a'

この構文は、キーワード引数の柔軟性と、Python 関数における適切なパラメーター順序の重要性を強調しています。

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

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