やりたいこと
複数の引数をとる関数について、引数の一部を事前に渡しておいて(引数の一部を固定した関数を用意しておいて)、残りの引数を後から渡せるようにしたい。
(ただし、デフォルト引数は使わない。)
実現方法
Python標準ライブラリのfunctoolsモジュールのpartial関数を使います。
例えば以下のようなコードで実現できます。
from functools import partial
def add_abc(a, b, c):
return a + b + c
add_abc_given_bc = partial(add_abc, b=2, c=3)
>>> a = 1
>>> add_abc_given_bc(a)
6
いわゆる部分適用というやつです。とても便利です。
functools --- 高階関数と呼び出し可能オブジェクトの操作 — Python 3.10.4 ドキュメント
コメント