こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonの可変長引数
*args
と**kwargs
の使い方について詳しく知りたい。
【Python】可変長引数(*args, **kwargs)とは
Pythonにおける可変長引数は、関数が可変数の引数を受け取るための仕組みです。主に *args
と **kwargs
という二つの構文が用いられます。
*args|複数の引数をタプル形式で受取
*args
のように*
を用いた引数は、呼出時に任意の数の引数を指定できます。
基本動作
*args
を用いた関数を実行すると、関数内では複数の引数をタプルとして受け取ることができます。
def example_args(*args):
print(f'args: {args}')
print(f'type: {type(args)}')
# 関数実行
example_args(1, 2, 3, 4)
# 出力イメージ
# args: (1, 2, 3, 4)
# type: <class 'tuple'>
逐次処理
*args
を用いた関数を実行すると、タプルで受け取った引数群をそれぞれ順番に表示することができます。
(例)ループ処理
def example_args(*args):
for arg in args:
print(arg)
# 関数実行
example_args(1, 2, 3, 4)
# 出力イメージ
# 1
# 2
# 3
# 4
(例)演算処理
def example_args(*args):
return sum(args)
# 関数実行
example_args(1, 2, 3, 4)
# 出力イメージ
# 10
複数引数の指定
*
を用いた引数の他に、位置引数も併せて指定した関数も作成可能です。
(例)最後に*argsを指定する場合
def example_args(arg1, arg2, *args3):
print(f'arg1: {arg1}')
print(f'arg2: {arg2}')
print(f'args3: {args3}')
# 関数実行
example_args(1,2,3,4,5)
# 出力イメージ
# arg1: 1
# arg2: 2
# args3: (3, 4, 5)
(例)途中に*argsを指定する場合
def example_args(arg1, *args2, arg3):
print(f'arg1: {arg1}')
print(f'args2: {args2}')
print(f'arg3: {arg3}')
# 関数実行
example_args(1,2,3,4,arg3=5)
# 出力イメージ
# arg1: 1
# args2: (2, 3, 4)
# arg3: 5
**kwargs|複数キーワード引数を辞書形式で受取
**kwargs
のように**
をつけた引数を用いると、関数呼出時に任意の数のキーワード引数を指定できます。
基本形式
**kwargs
を用いた関数を実行すると、関数内では複数のキーワード引数を辞書として受け取ることができます。
(例)基本形式
def example_kwargs(**kwargs):
print(f'kwargs: {kwargs}')
print(f'type: {type(kwargs)}')
# 関数実行
example_kwargs(a=1,b=2,c=3)
# 出力イメージ
# kwargs: {'a': 1, 'b': 2, 'c': 3}
# type: <class 'dict'>
(例)辞書オブジェクトをそのまま引数として渡す
**
をつけた辞書オブジェクトをそのまま関数に渡して実行することもできます。
def example_kwargs(**kwargs):
print(f'kwargs: {kwargs}')
print(f'type: {type(kwargs)}')
# 関数実行
data = {"a":1, "b":2, "c":3}
example_kwargs(**data)
# 出力イメージ
# kwargs: {'a': 1, 'b': 2, 'c': 3}
# type: <class 'dict'>
複数引数の指定
位置引数と**kwargs
の複数の引数で関数を作成することもできます。
def example_kwargs(arg1, arg2, **kwargs):
print(f'arg1: {arg1}')
print(f'arg2: {arg2}')
print(f'kwargs: {kwargs}')
# 関数実行
example_kwargs(0, 1, **{"a":3, "b":4, "c":5})
# 出力イメージ
# arg1: 0
# arg2: 1
# kwargs: {'a': 1, 'b': 2, 'c': 3}
引数の利用
**kwargs
で指定したキーワード引数は関数内で次のように利用することができます。
def example_kwargs(**kwargs):
sum_data = kwargs["a"] + kwargs["b"]
return sum_data
# 関数実行
example_kwargs(**{"a":1, "b":2})
# 出力イメージ
# 3
【参考】Pythonを活用した様々なお役立ち情報
当サイトではPythonを活用した様々なお役立ち情報を配信しています。
Pythonでできること・仕事に応用
「Pythonで実現できることを知りたい」「Pythonスキルを仕事で活かしたい」方はこちら!
Python✖️AI・機械学習
Python活用の最大メリットの1つであるAI・機械学習について詳しく知りたい方はこちら!
Python✖️投資自動化(仮想通貨)
Pythonはフィンテックとの相性が良く、その中でも仮想通貨自動売買タスクは近年注目度の高い領域です。フィンテック・投資に興味がある方はこちら!
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら