なぜデフォルトの引数を必須の引数の前に置くことができないのですか?
Python では、デフォルト以外の引数がデフォルトの引数の後に続くと SyntaxError が発生します。関数のパラメータリスト。この制限は、インタプリタによる引数値の明確な解釈を保証するために存在します。
次の関数定義を考えてみましょう:
def fun1(a="who is you", b="True", x, y): print a, b, x, y
このコードでは、必須パラメータ x と y が後に続くため、SyntaxError が発生します。デフォルトのパラメータ a と b。
必須の引数が優先されます
必須のパラメータは、関数のパラメータ リスト内のデフォルト パラメータよりも常に前に配置する必要があります。これは、必須パラメータは必須であるのに対し、デフォルト パラメータはオプションであるためです。構文的には、引数が混在している場合、インタプリタはどの値がどの引数に一致するかを判断できません。
例
次のコードは、必須パラメータが x であるため、エラーなしで実行されます。と y は、デフォルトのパラメータ a と b の前に配置されます。
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
キーワード引数
キーワード引数を使用して、任意の順序で引数を指定して関数を呼び出すことができます。ただし、関数のパラメーター リスト内のパラメーターの順序によって、どの値がどの引数に割り当てられるかが決まります。
たとえば、上記の関数定義の場合:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
次のコードは次のとおりです。 valid:
fun1("ok a", "ok b", 1) # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
ただし、パラメータがデフォルト値で宣言されていない場合:
def fun1(x, y, a, b): print a, b, x, y
次のコードは TypeError を発生させます:
fun1("ok a", "ok b", 1) # 3 arguments instead of 4
したがって、デフォルト引数は、オプションの引数を許可したり、キーワード引数を使用するときに欠落している引数をスキップしたりする場合に便利です。
以上がPython 関数定義では、必須の引数をデフォルトの引数よりも前に置く必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。