なぜデフォルトの引数がデフォルト以外の引数より前になければならないのですか?
Python では、特に関数定義内の引数の順序が重要です。デフォルトの引数とデフォルト以外の引数が混在しています。この順序付けルールにより、関数呼び出し中の引数の明確な解釈が保証されます。
次の例のように、関数の定義でデフォルト以外の引数がデフォルトの引数の後に続く場合、SyntaxError がスローされます。
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
このエラーは、関数シグネチャ内で必須パラメータ (デフォルト以外) が常にオプション パラメータ (デフォルト) よりも前にある必要があるために発生します。関数呼び出しで引数が省略された場合、デフォルトの引数はプレースホルダー値を満たしますが、デフォルト以外の引数は必須です。
上記の例に見られるように、引数が間違った順序で配置されている場合、インタプリタは正しい割り当てを決定できません。値を関数パラメータに変換します。関数呼び出し中に渡される値がデフォルトの引数またはデフォルト以外の引数と一致するかどうかは明確ではありません。
曖昧さを避けるために、次の正しい構文を使用できます:
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y)</code>
キーワード引数をデフォルトの引数とともに使用して、順序が正しくない位置引数を提供したり、欠落している引数をスキップしたりできます。たとえば、デフォルトの引数「a」と「b」は次の関数呼び出しで使用できます:
<code class="python">fun1(1, 2, b="False")</code>
この場合、最初の 2 つの位置引数は「x」と「y」に割り当てられます。キーワード引数は値「False」を「b」に割り当て、デフォルト値「True」をスキップします。
以上がPython 関数でデフォルトの引数をデフォルト以外の引数の前に置く必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。