こんにちはTamagoです。
関数のデフォルトを設定していると、呼び出す側の関数で引数のバリエーションが異なる処理を何回も書くことが出てくると思います。
if文で分岐して書くこともできるのですが、なんだかイケてないなと思ってちょっと調べてみました。
今回は、関数を呼び出すときに引数を動的に変更して呼び出す方法について説明していきたいと思います。
例えば
例えば、以下のような関数あって、3つの引数と2つの引数を渡す場合があるとします。
呼びたい関数
def function(
param1='default1',
param2='default2',
param3='default3',
):
print(f"param1:{param1}")
print(f"param2:{param2}")
print(f"param3:{param3}")
3つの引数を渡して呼び出す場合
function(param1='new1', param2='new2', param3='new3')
2つの引数を渡して呼び出す場合
function(param1='new1', param2='new2')
上記二つの処理を同じ関数内で呼び出すときはどうしましょう。
スポンサーリンク
if文で分岐するのと引数が増えたときにまた分岐が増えるので極力さけたい。
辞書で渡すこともできる
解決方法としては引数を辞書で渡します。
19行目と23行目のように「**辞書」で渡すと動的に呼び出すことができます。
正式ドキュメントとかでよく見る「**kwargs」ってこのことなんですね・・・
実行結果
こんな感じで、下の2ブロックは辞書を使って呼び出していますが、エラーもなく、個別に引数を渡して呼び出した時と同じ結果になっています。
