1. ホーム
  2. python

[解決済み] アスタリスクとデュアルアスタリスクで始まるPythonのメソッド/関数の引数 [重複]について

2023-05-27 08:47:48

質問

このようなタイプの関数がどこで使われているのか、また、これらの引数が通常の引数とどのように異なって動作するのか、理解することができません。私は何度も遭遇していますが、それらを適切に理解する機会がありません。

def method(self, *links, **locks):
    #some foo
    #some bar
    return

私は私がドキュメントを検索することができたことを知っているが、私は何を検索するために見当もつかない。

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

この *args**keywordargs という形式は、それぞれ引数のリストと引数の辞書を渡すために使われます。だから、もしこんな関数があったら

def printlist(*args):
    for x in args:
        print(x)

こんな感じで呼び出せます。

printlist(1, 2, 3, 4, 5)  # or as many more arguments as I'd like

これには

def printdict(**kwargs):
    print(repr(kwargs))

printdict(john=10, jill=12, david=15)

*args はリストのように振る舞い **keywordargs は辞書のように振る舞いますが、明示的に list または dict を関数に追加します。

参照 これ を参照してください。