python

argsとkwargs

args(可変長引数)について

args(以下可変長引数)は引数名の前に「*」(アスタリスクマーク)をつけて使用します。 なお、可変長引数はタプルとして機能し、引数は複数個指定することが可能です。 (タプルとは作成後の変更が不可能なリストで()で囲んであります。リストは[]で囲む。)

def add_num(*args):
    i = 0
    for num in args:
        i += num
    return i

add_num(1,2,3,4,5,6,7,8,9,10)
=>55

ちなみにargsの部分は何でも大丈夫です。args(argumentsの略)がデフォルトなので基本的には argsを使用します。

kwargs(可変長引数)について

kwargsも可変長引数として使用できます。argsと似ており、引数名の前に「**」(アスタリスクを二つ)を つけて使用します。 kwargsはディクショナリとして機能します(keyが引数名、valueが値)

def test_func(**kwargs)
    print(kwagrs)

test_func(a=1,b=2)
=>{'a': 1, 'b': 2}

kwargsも引数名は何にしても大丈夫ですが、デフォルトとしてkwargsがそのまま使用されることが 多いです。

*の正体

*はunpacking operaterといって、*をつけたリストやタプルを分解して各変数に再代入します。

list_a = [1,2,3]
list_b = [4,5,6]
list_a_b = [**list_a, **list_b]
list_a_b
=>[1,2,3,4,5,6]