Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの位置引数がキーワード引数の後に続く解決策

Pythonには、位置引数とキーワード引数の2種類の引数があります。これらの引数は特定の順序で表示される必要があります。そうでない場合、Pythonインタープリターはエラーを返します。

このガイドでは、「位置引数がキーワード引数の後に続く」エラーと、それが発生する理由について説明します。このエラーのあるサンプルコードスニペットを見て、問題を解決する方法を説明します。

始めましょう!

問題:位置引数がキーワード引数の後に続く

エラー全体を見てみましょう:

SyntaxError: positional argument follows keyword argument

英語と同様に、プログラミング言語にも独自のルールがあります。これらの規則は構文と呼ばれます。私たちのエラーは構文エラーです。これは、Pythonコードの記述方法を管理するルールの1つに従わなかったことを意味します。

エラーの次の部分は、このエラーの原因を示しています。この場合、コードにはキーワード引数の後に表示される位置引数が必要です。

位置引数は、それぞれの位置に表示される引数です。

def add_numbers(a, b):
	return a + b

Let's call this function:

add_numbers(2, 3)

「a」と「b」は関数内の変数になります。このコードは、2つの位置引数を指定したために機能します。 「a」は2に等しく、「b」は3に等しい。これらの引数をキーワード引数として指定することもできます。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

add_numbers(a=2, b=2)

ただし、最初に位置引数を指定してから、キーワード構文に切り替えることはできません。

これは、Pythonには、関数内の複数の引数を処理する*argsと呼ばれる特別な関数があるためです。このコードを検討してください:

def show_users(a, b, *args):
	print(a, b, *args)

このコードは*argsを使用します。このキーワードは、可変数の引数を表します。 show_users()にいくつでも引数を渡すことができます 必要に応じて機能する:

show_users("Alex", "Peter", "Violet', "Julie")

コードが返されます:Alex Peter Violet Julie

最初の2つの引数「a」と「b」には、それぞれ「Alex」と「Peter」の値があります。

これは、位置構文を使用する場合、引数が渡される順序で割り当てられるためです。 * argsは不明な量の追加引数を表すため、最後の引数は記載されている順序で表示されます。

シナリオ例

このエラーが発生するコードスニペットを見てみましょう:

def print_menu(salads, pizzas):
	print("Salad Menu")
	for s in salads:
		print(s)
	print("")
	print("Pizza Menu")
	for p in pizzas:
		print(p)

この関数は、サラダとピザの2つの引数を受け入れます。この関数は、サラダメニューの各サラダとピザメニューの各ピザをコンソールに出力します。

関数を呼び出しましょう:

salads = ["Tuna Salad", "Lettuce and Mango Salad", "Greek Salad"]
pizzas = ["Veggie Supreme", "Ham and Pineapple", "BBQ Chicken"]

print_menu(pizzas=pizzas, salads)

コードは次のようになります:

File "main.py", line 13
	print_menu(pizzas=pizzas, salads)
                          	^
SyntaxError: positional argument follows keyword argument

予想どおり、コードにエラーがあります。修正しましょう。

ソリューション

この問題を解決するには、すべての位置引数がキーワード引数の前に来るようにする必要があります。このルールを反映するように関数の呼び出し方法を変更しましょう:

print_menu(salads, pizzas)

サラダとピザの2つの位置引数を指定しました。または、「サラダ」の後にキーワード引数として「ピザ」を指定することもできます。

print_menu(salads, pizzas = pizzas)

この例では、* argsメソッドを使用していないため、キーワード引数を追加する必要はありません。そうは言っても、キーワード引数を追加すると、関数に渡される値の数に応じてコードが読みやすくなります。

この改訂された関数呼び出しを使用してコードを実行してみましょう。

Salad Menu
Tuna Salad
Lettuce and Mango Salad
Greek Salad

Pizza Menu
Veggie Supreme
Ham and Pineapple
BBQ Chicken

このコードは、2つのPythonリストを正常に出力します。

結論

Pythonでは、位置引数はキーワード引数の前に表示する必要があります。これは、Pythonが位置引数を出現順に解釈するためです。次に、指定されたキーワード引数を解釈します。

これで、Pythonのエキスパート開発者のように、「位置引数がキーワード引数に従う」というエラーを解決する準備が整いました。


  1. Pythonでの引数の解析

    すべてのプログラミング言語には、スクリプトを作成して端末から実行したり、他のプログラムから呼び出されたりする機能があります。このようなスクリプトを実行する場合、スクリプト内でさまざまな関数を実行するために、スクリプトに必要な引数を渡す必要があることがよくあります。この記事では、Pythonスクリプトに引数を渡すさまざまな方法を説明します。 sys.argvの使用 これは組み込みモジュールです。sys.argvは、スクリプトで渡される引数を処理できます。デフォルトでは、sys.argv[0]で考慮される最初の引数はファイル名です。残りの引数には、1、2などのインデックスが付けられます。次の例で

  2. Pythonのデフォルトの引数は何ですか?

    Pythonでは、関数の引数にデフォルト値を設定できます。関数が引数なしで呼び出された場合、引数はデフォルト値を取得します デフォルトの引数: 例 Pythonには、関数の引数の構文とデフォルト値を表す別の方法があります。デフォルト値は、関数呼び出し中に引数値が渡されない場合、関数引数がその値を取ることを示します。デフォルト値は、代入(=)演算子を使用して割り当てられます。以下は、デフォルト引数の一般的な構文です。ここで、fooパラメータのデフォルト値はHi!です。 def defaultArg(name, foo='Come here!'):