この記事では、Python でキーワード引数の後に位置引数が続くという構文エラーを修正する方法について説明します。
引数は、関数を呼び出すときに関数に提供される値です。たとえば、以下のプログラムを見てください。
パイソン
# function> def> calculate_square(num):> >return> num>*> num> > > # call the function> result>=> calculate_square(>10>)> print>(result)> |
Javaの更新
>
>出力
100>
の 計算二乗() 関数は引数を受け取ります 1つで これは整数または 10 進数の入力であり、数値の 2 乗を計算して値を返します。
Python のキーワードと位置引数
引数には、キーワードと位置の 2 種類があります。名前が示すように、キーワード引数は何らかのキーに基づいて関数によって識別されますが、位置引数は関数定義内の位置に基づいて識別されます。これを例を挙げて見てみましょう。
パイソン
# function> def> foo(a, b, c>=>10>):> >print>(>'a ='>, a)> >print>(>'b ='>, b)> >print>(>'c ='>, c)> > > # call the functions> print>(>'Function Call 1'>)> foo(>2>,>3>,>8>)> print>(>'Function Call 2'>)> foo(>2>,>3>)> print>(>'Function Call 3'>)> foo(a>=>2>, c>=>3>, b>=>10>)> |
>
>
出力:
Function Call 1 a = 2 b = 3 c = 8 Function Call 2 a = 2 b = 3 c = 10 Function Call 3 a = 2 b = 10 c = 3>
説明:
- 最初の関数呼び出しでは、任意のキーワードとともに 3 つの引数を指定しました。 Python は、これらのキーワードの位置を考慮して、関数内で定義されている順序で解釈されます。
- 2 番目の関数呼び出しでは 2 つの引数を指定しましたが、2 つの位置引数を指定し、関数の最後の引数にはデフォルト値があるため、出力は表示されます。 c 。したがって、最後の引数にはデフォルト値が考慮されます。
- 3 番目の関数呼び出しでは、3 つのキーワード引数が提供されます。このキーワード引数を指定する利点は、位置を覚えておく必要がなく、関数呼び出しに必要なキーワードだけを覚えておく必要があることです。これらのキーワードは任意の順序で指定できますが、関数はこれらを渡される順序ではなくキーと値のペアとして受け取ります。
構文エラー: 位置引数がキーワード引数の後に続きます
上記の 3 つのケースでは、Python が関数呼び出し中に渡される引数値をどのように解釈できるかを見てきました。さて、次の例を考えてみましょう。 構文エラー 。
パイソン
コンピュータの種類
# function definition> def> foo(a, b, c>=>10>):> >print>(>'a ='>, a)> >print>(>'b ='>, b)> >print>(>'c ='>, c)> > ># call the function> print>(>'Function Call 4'>)> foo(a>=>2>, c>=>3>,>9>)> |
>
>
出力:
File '', line 7 foo(a=2, c=3, 9) ^ SyntaxError: positional argument follows keyword argument>
説明:
この例では、関数呼び出し中に引数を渡した方法が原因でエラーが発生しました。エラー位置引数がキーワード引数の後に続くということは、関数呼び出しでキーワード引数が使用されている場合は、その後に常にキーワード引数が続く必要があることを意味します。位置引数は、キーワード引数が渡される前の先頭に記述することができます。ここ、 a=2 そして c=3 キーワード引数です。 3 番目の引数 9 は位置引数です。これは、どのキーがどの値を保持するかについて Python によって解釈できません。この点での Python の動作方法は、最初に位置引数をマップし、次に存在する場合はキーワード引数をマップします。
エラーを回避する方法 - 結論
