Python で Kwargs を別の関数に渡す
 
Python は、プログラム内の関数に渡すことができる 2 種類の引数をリストしています。 非キーワード引数 ( **args ) とキーワード引数 (**kwargs ) 。
通常、Python 関数は正しい数の引数で呼び出す必要があります。 関数が 2つの引数を想定している場合は、2つだけを渡す必要があります。
この記事では、キーワード引数の使用方法と、キーワード引数を別の関数に渡す方法について説明します。
Python のキーワード引数
通常、引数は情報を関数に渡します。 キーワード引数は、関数に引数を渡すために使用できるメソッドの 1つです。
特にキーワード引数を使用すると、key = value 構文で引数を送信できます。 次の例を見てみましょう。
def keyword_function(fname, lname, age):
    print("first name is " + fname)
keyword_function(fname="Anne", lname="Steaven", age=27)
この例では、keyword_function という関数を定義しています。 fname、lname、age という名前の 3つの引数を渡します。
したがって、これらの引数はキーワード引数として送信されます。関数がプログラムで呼び出されると、各引数にキーと値のペアが必要になるためです。
出力:

上記の出力では、fname 引数を渡すステートメントを出力しています。
Python で **kwargs を使用して関数を呼び出す
主にキーワード引数は、いくつかの引数が不明な場合に使用できます。 その場合は、関数定義のパラメータ名の前に 2つのアスタリスク (**) を追加します。
関数に **kwargs パラメータがある場合、可変数のキーワード引数を辞書として受け入れます。
次の例を考えてみてください。
def animals(**kwargs):
    print(kwargs)
animals(name1="Rabbit", name2="Dog", name3="Monkey")
上記のコードには animals という関数があります。 **kwargs というパラメーターがあり、これはキーワード引数として 3つの引数を持つ関数呼び出しです。
出力:

結果は、値とキーの 2つのペアを持つ辞書として表示されます。 kwargs 引数は規約です。
したがって、パラメーター名として、意味のある名前を使用できます。 同様に、これは **kwargs パラメーターを使用して関数を呼び出す方法です。
kwargs を Python で別の関数に渡す
コード:
def info(**kwargs):
    x = dict(name="shen", age=27, degree="SE")
    pass_func(**x)
def pass_func(**kwargs):
    for i in kwargs:
        print(i, kwargs[i])
info()
上記のコードを使用して、name、age、degree など、人物に関する情報を出力します。 このプログラムは、dict メソッドを宣言する変数 x を含む別の関数に kwargs を渡します。
パラメータなしで定義された関数 info の例。 関数 info は、3つのキーと値のペアを定義する変数 x を宣言しました。通常、キーと値のペアは Python の辞書型で定義されます。
したがって、dict メソッドはキーと値のペアを指定します。 kwargs unpack 引数は辞書型として宣言されているため、この例では dict メソッドを使用できます。
次に、kwargs 引数を渡す pass_func という別の関数があります。 この関数には、kwargs 引数を出力する for ループが含まれています。その後、kwargs 関数を info 関数に渡して x を出力できます。
したがって、x 変数に kwargs 引数を指定して pass_func を呼び出します。 最後に、pass_func 関数で info 関数を呼び出します。
出力:

まとめ
この記事全体を通して、kwargs を別の関数に渡す方法に焦点を当てました。 kwargs 引数は、引数ごとに定義されたパラメーターなしで複数の変数を取得できます。
kwargs 引数を関数に渡すときは、パラメーター名 **kwargs で二重アスタリスクを使用する必要があります。 kwargs を別の関数に渡す場合、最初に 2つのアスタリスクを使用してパラメーターを作成し、その関数を目的として別の関数に渡すことができます。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.
