PythonのFunctoolsモジュールの部分関数の引数(パラメータ)の順序

PythonのFunctoolsモジュールの部分関数の引数(パラメータ)の順序について解説します。

PythonのFunctoolsモジュールを使用し部分関数を作成した場合に、位置引数の代わりにキーワード引数を使用することができます。

■Python

Google Colaboratory(Google Colab),Python3.7.10

■部分関数を作成しキーワード引数を使用する

では、PythonのFunctoolsモジュールを使用し部分関数を作成してみます。

■コード

from functools import partial

def func_test(a,b,c,d):
  return a*2 + b*3 + c*4 + d

result = partial(func_test,c=4,d=5) 

print(result(1,2))

「from import」でFunctoolsモジュールのpartialを呼び出します。今回はdef文でfunc_testという関数を定義し、関数に渡す引数,パラメータをa,b,c,dに設定します。関数が呼びされた時に、実行される処理としては、returnでaと2、bと3、cと4を代数演算子”*(アスタリスク)”を用い乗算(掛け算)し、それらすべての数値をdに代数演算子”+(プラス)”を用い加算(足し算)した数値を返すものです。

func_testを定義後、resultを定義し、partial()を用いて括弧内に第1の引数,パラメータとして、定義した呼び出す関数の名前を渡します。第2の引数,パラメータで、キーワード引数を用いて、今回はcに「4」、dに「5」を渡します。これで関数が呼び出され、部分関数が作成されます。

最後に、result()を呼び出してみます。呼び出す際は括弧内に部分関数に渡す数値を入れます。

■実行・検証

このスクリプトを作成後、このスクリプトを実行してみます。

実行してみると、Functoolsモジュールのpartial()を用いたことで、部分関数が作成され、作成した部分関数の処理が実行。この時に、キーワード引数で渡した数値と、関数を呼び出す際に渡した数値を元に処理が実行され、結果(戻り値)をprint()関数で出力させることができました。

■キーワード引数を設定しないとどうなるのか

■コード

from functools import partial

def func_test(a,b,c,d):
  return a*2 + b*3 + c*4 + d

result = partial(func_test,5,4) 

print(result(1,2))

実行後、先程コードはほとんど同じですが、今度はキーワード引数を使用せずに位置引数のみで、引数の順序を変更してみます。

■実行・検証

このスクリプトを実行してみます。

実行してみると、先程のキーワード引数とは異なる結果がprint()関数を用いたことで出力されました。この結果からキーワード引数を用いないと、結果が変わるということがわかりました。これは重要です。

コメント

タイトルとURLをコピーしました