Pythonにおける*及び**の役割
3日に1回書く宣言してたけど人生稀に見る多忙さ故に挫折しそう。
なので簡単な事かきます。
色々な人のソース見てると、たま〜に、
def func(*foo, **bar):
このような物を見かけると思います。
Cでつまずいた人だと、ポインタだと思ってびっくりしちゃうかもしれません(びっくりしました)
結論から言うとポインタではありません。安心してください。
Pythonにおけるアスタリスクは可変長引数の役割をします。
引数の数に制限を欠けたくないときに便利ですね。
まず、*の場合(一つ)
def func(foo, bar, *args): print foo+bar for arg in args: print arg , func(1,2,"a","b","c")
とすると、出力は
3 a b c
となります。
foo及びbarに入る引数以外はタプルになります!便利ですね。
ちなみに入力が0個になっても動きます。
次に、**の場合(二つ)
def func(foo, bar, **kwargs): print foo+bar print kwargs func(1,2,a="10",b="20",c="30")
とすると、出力は
3 {'a': '10', 'c': '20', 'b': '30'}
となります。辞書型ですね。
はい、見たところ確実にポインタではないようです。