logo

Python の *args と **kwargs

この記事では、** (二重星/アスタリスク) と * (星/アスタリスク) がパラメータに対して何を行うかについて説明します。 パイソン , ここでも取り上げます。 Python の args と kwargs の例。 特殊なシンボルを使用して、可変数の引数を関数に渡すことができます。

特別な記号が 2 つあります。



Python の *args と **kwargs

Python で引数を渡すために使用される特殊記号:

  • *args (キーワード以外の引数)
  • **kwargs (キーワード引数)

注記: 関数に渡すべき引数の数に疑問がある場合、関数の引数としてワイルドカードまたは * 表記 (*args OR **kwargs) を使用します。



Python *args とは何ですか?

特殊な構文 *引数 Python の関数定義では、可変数の引数を関数に渡すために使用されます。これは、キーワードのない可変長の引数リストを渡すために使用されます。

  • 構文では、記号 * を使用して可変数の引数を受け取ります。慣例により、args という単語と一緒に使用されることがよくあります。
  • *引数 これにより、以前に定義した仮引数の数よりも多くの引数を取り込むことができます。と *引数 、現在の仮パラメータに任意の数の追加引数を追加できます (追加引数がゼロの場合も含む)。
  • たとえば、任意の数の引数を受け取り、それらをすべてまとめて乗算できる乗算関数を作成したいとします。 *args を使用して実行できます。
  • * を使用すると、* に関連付けられた変数が反復可能になります。つまり、変数を反復処理したり、マップやフィルターなどの高次関数を実行したりできるようになります。

例 1:

可変数の引数の *args を説明する Python プログラム



Javaでスローを投げる
パイソン
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

出力:

Hello Welcome to techcodeview.com>

例 2:

最初の追加引数を持つ *args を示す Python プログラム

ジャバブレイク
Python3
def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

出力:

First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>

Python **kwargs とは何ですか?

特殊な構文 **クワーグス Python の関数定義では、キーワード付きの可変長の引数リストを渡すために使用されます。私たちはその名前を使用します クワーグス ダブルスター付き。その理由は、二重星を使用すると、キーワード引数 (および任意の数) を渡すことができるためです。

  • キーワード引数は、変数を関数に渡すときに変数に名前を指定する場所です。
  • 考えられるのは、 クワーグス 各キーワードを一緒に渡す値にマッピングする辞書として機能します。だからこそ、反復処理を行うと、 クワーグス 印刷された順序はないようです。

例 1:

可変数のキーワード引数に対する *kwargs を説明する Python プログラム。ここで **kwargs は、関数呼び出しによって渡されるキーワード付きの可変長引数を受け入れます。 for first='Geeks' first がキーで、'Geeks' が値です。簡単に言うと、何を割り当てるかが価値であり、誰に割り当てるかが鍵です。

パイソン
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>

出力:

first == Geeks mid == for last == Geeks>

例 2:

追加の引数が 1 つある可変数のキーワード引数に対する **kwargs を示す Python プログラム。すべて同じですが、1 つの変更点は、位置引数 (myFun の arg1) で受け入れられる非キーワード引数を渡すことです。渡すキーワード引数は **kwargs によって受け入れられます。シンプルですよね?

パイソン
def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>

出力:

first == Geeks mid == for last == Geeks>

Python で *args と **kwargs の両方を使用して関数を呼び出す

例 1:

ここでは、*args と **kwargs を myFun 関数の引数として渡しています。 *args を myFun に渡すということは、単に args に含まれる位置引数と可変長の引数を渡すことを意味します。したがって、Geeks は arg1 に渡し、Geeks は arg2 に渡し、Geeks は arg3 に渡します。 **kwargs を引数として myFun に渡すことは、キーワード引数を受け入れることを意味します。ここで、arg1 はキー、値は Geeks で、arg1 に渡されます。同様に、for と Geeks はそれぞれ arg2 と arg3 に渡されます。すべてのデータを渡した後、すべてのデータを行単位で出力します。

パイソン
def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>

出力:

arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>

例 2:

ここでは、*args と **kwargs を myFun 関数の引数として渡しています。どこ 「オタク」、「のために」、「オタク」 *args として渡され、 最初 = オタク、中間 = 向け、最後 = オタク **kwargs および printing として渡されます 同じ行にあります。

パイソン
def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>

出力:

args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>

Python で *args と **kwargs を使用してオブジェクトの値を設定する

  • *args は引数を タプル
  • **kwargs は引数を次のように受け取ります 辞書

例 1: Python *args の使用

パイソン
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>

出力:

文字列の追加
red 250>

例 2: Python **kwargs の使用

パイソン
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>

出力:

red 250>