Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

SyntaxError: positional argument follows keyword argument とは何ですか?

こんにちは、PyQサポートです。

今回は SyntaxError: positional argument follows keyword argument というエラーの意味と、その原因を解説します。

質問:positional argument follows keyword argumentとは何ですか?

positional argument follows keyword argumentというエラーが出ました。
このエラーが出る原因を教えてください。

回答:引数の指定に問題があるという文法エラーです

エラーメッセージ positional argument follows keyword argumentを直訳すると「位置引数がキーワード引数に続いている」という意味で、これは引数の指定に問題があるという文法エラーです。

Pythonでは、関数やメソッドに引数を与える方法として、位置引数キーワード引数があります。

これらをあわせて使用する場合、キーワード引数の後に位置引数を書けないというルールになっています。

SyntaxError: positional argument follows keyword argumentは、そのルールに違反しているというエラーです。

では以下の関数を例に、位置引数キーワード引数について説明します。

def print_wage(name, wage, hours):
    print(f"{name}さんの給料は{wage * hours}円です")

位置引数とは

たとえば上記の関数は以下のように実行できます。

 print_wage("田中", 1100, 5)

このとき、print_wage()に与えた3つの引数は、前から順番にそれぞれnamewagehoursに代入されます。

そのため、実行結果は以下のようになります。

田中さんの給料は5500円です

このような引数の渡し方を位置引数と言います。

キーワード引数とは

以下のように、値を渡す引数名を指定することで、引数の順番を変更できます。
(実行結果は上記と同じです)

print_wage(hours=5, name="田中", wage=1100)

このような引数の渡し方をキーワード引数と言います。

位置引数とキーワード引数をあわせて使う

位置引数とキーワード引数は、以下のように組み合わせて使うこともできます。

print_wage("田中", hours=5, wage=1100)

この場合、最初の"田中"は位置引数として、残りはキーワード引数として扱われます。

ここで注意しなければならないことは、キーワード引数の後に位置引数を書けないということです。

以下のようにキーワード引数の後に位置引数を書くと、エラーになります。

print_wage(hours=5, "田中", 1100)

実行結果

    print_wage(hours=5, "田中", 1100)
                                      ^
SyntaxError: positional argument follows keyword argument

キーワード引数の後に書く引数は、すべてキーワード引数にしましょう。

関連リンク

blog.pyq.jp

blog.pyq.jp

blog.pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.