毎回のように同じ引数を指定する関数を使用する際、呼び出すたびにその引数をいちいち記述するのは結構めんどくさい。
なのでそんな時は、functools
モジュールのpartial()
関数を使ってあらかじめ引数を指定したpartial
オブジェクトを生成すると楽です。
それでは、functools.partial()
関数の使い方を見ていきましょう!
スポンサーリンク
functools.partial()関数
functools.partial()
関数の書式は以下のような感じ。functools
モジュールは標準ライブラリなのでインポートするだけで使えます。
import functools
functools.partial(func, /, *args, **keywords)
定義されている引数は以下のような感じ。
func引数 | 関数の参照。 |
---|---|
*args引数 | func関数に位置引数として引き渡す値。 |
**keywords引数 | func関数にキーワード引数として引き渡す値。 |
以下のコードは、print()
関数の改行を余分にするprintl()
を定義しています。
import functools
# 改行を余分にするprint()を生成
printl = functools.partial(print, end='\n\n')
# 呼び出し
printl(123)
printl('abc')
実行結果
123
abc
このように、頻繁に同じ引数を指定するような関数はfunctools.partial()
で作っちゃった方が楽ですね❗️
partialオブジェクト
partial
関数を実行するとpartial
オブジェクトが生成されます。このオブジェクトは、以下の3つの呼び出し専用属性を持っています。
func | 渡された関数の参照が格納されている。 |
---|---|
args | partialオブジェクト呼び出し時に一番左の位置引数として渡される値。 |
keyworgs | partialオブジェクト呼び出し時にキーワード引数として渡される値。 |
import functools
line = functools.partial(print, '-------------', end='\n\n')
print(type(line))
print(line.func)
print(line.args)
print(line.keywords)
実行結果
<class 'functools.partial'>
tesut
None
('-------------',)
{'end': '\n\n'}
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ