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()関数を用いたことで出力されました。この結果からキーワード引数を用いないと、結果が変わるということがわかりました。これは重要です。
コメント