【Python】関数の引数を一部だけ先に渡しておいて、残りを後で渡す方法【partial】

やりたいこと

複数の引数をとる関数について、引数の一部を事前に渡しておいて(引数の一部を固定した関数を用意しておいて)、残りの引数を後から渡せるようにしたい

(ただし、デフォルト引数は使わない。)

実現方法

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.8.5 ドキュメント

コメント