【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 --- Higher-order functions and operations on callable objects
ソースコード: Lib/functools.py functools モジュールは高階関数、つまり関数に影響を及ぼしたり他の関数を返したりする関数のためのものです。一般に、どんな呼び出し可能オブジェクトでもこのモジュールの目的には関数として扱えます。 モジュール functools は以下の関数を定義します: part...

コメント