1. ホーム
  2. python

[解決済み] 関数シグネチャで変数名の前にある*と**は何を意味するのですか?重複

2022-09-26 21:26:41

質問

重複の可能性があります。

Pythonのkwargsを理解する

私はPythonのコードの一部を読みました、そして、私はこのコードで*と**が何を意味するのか分かりません。

def functionA(self, *a, **kw):
   // code here

メソッドやコンストラクタのパラメータにある属性をすべて抽出することです。

もしこれが上記の関数に当てはまるとすると、残りはどうなるのでしょうか。** ?

どのように解決するのですか?

の中に 関数ヘッダ :

* は、すべての位置引数をタプルで収集します。

** は、辞書の中のすべてのキーワード引数を収集します。

>>> def functionA(*a, **kw):
       print(a)
       print(kw)


>>> functionA(1, 2, 3, 4, 5, 6, a=2, b=3, c=5)
(1, 2, 3, 4, 5, 6)
{'a': 2, 'c': 5, 'b': 3}

には 関数呼び出し :

* リストやタプルを位置引数に展開する。

** キーワード引数に辞書をアンパックします。

>>> lis=[1, 2, 3, 4]
>>> dic={'a': 10, 'b':20}
>>> functionA(*lis, **dic)  #it is similar to functionA(1, 2, 3, 4, a=10, b=20)
(1, 2, 3, 4)
{'a': 10, 'b': 20}