【Python】*argsと**kwargs
*args
とは・・任意の数の引数を受け取る関数名
(argumentsの略)
**kwargs
とは・・呼び出し側のキーワード引数をまとめて受け取れる関数名
(keyword argumentsの略)
ちなみに、argumentとはIT業界では、関数やメソッドを呼び出す際に、引き渡される値や変数のこと
みたいです。
*argsについて
args
def number(*args):
print(args)
number(1, 2, 3, 4, 5)
number(6, 7, 8, 9, 10)
実行結果
(1, 2, 3, 4, 5)
(6, 7, 8, 9, 10)
※引数をタプルとして受け取っています。
残りは任意の引数を受け取る方法
def number(a, b, *args):
print('a:', a)
print('b:', b)
print('rest:', args)
number(1, 2)
number(1, 2, 3, 4)
実行結果
a: 1
b: 2
rest: ()
a: 1
b: 2
rest: (3, 4)
**kwargsについて
kwargs
def number(**kwargs):
print(kwargs)
number()
number(a=1, b=2)
実行結果
{}
{'a': 1, 'b': 2}
※キーワード引数は辞書で受け取っています。
デフォルト引数との組み合わせ
def number(a=0, **kwargs):
print('a:', a)
print('kwargs:', kwargs)
number()
number(a=1, b=2)
number(a=1, b=2, c=3, d=4)
実行結果
a: 0
kwargs: {}
a: 1
kwargs: {'b': 2}
a: 1
kwargs: {'b': 2, 'c': 3, 'd': 4}
*argsと**kwargsの組み合わせ
def number(*args, **kwargs):
print('args:', args)
print('kwargs:', kwargs)
number()
number(a=1, b=2)
number(1, 2, c=3, d=4)
実行結果
args: ()
kwargs: {}
args: ()
kwargs: {'a': 1, 'b': 2}
args: (1, 2)
kwargs: {'c': 3, 'd': 4}