Pythonのfunctools
モジュールの一つは一部の機能(部分関数)であり、多くの有用な機能を提供します。一部の機能にここに部分関数と数学的な意味は同じではないことに注意してください。
関数のパラメータを導入し、我々は、パラメータのデフォルト値を設定することにより、あなたは関数呼び出しの困難さを軽減することができ、について話しました。部分的な機能もこれを行うことができます。たとえば、次のように:
int()
関数は、整数の文字列に変換することができ、ときにのみ、着信文字列、int()
デフォルト機能の小数変換:
>>> int('12345')
12345
しかし、int()
機能も追加提供base
パラメータは、デフォルト値を10
。入ってくる場合base
のパラメータは、N進変換を行うことができます。
>>> int('12345', base=8)
5349
>>> int('12345', 16) 74565
あなたがバイナリ文字列の数が多い、毎回渡して変換するとしますint(x, base=2)
ので、非常に面倒で、私たちが考える、定義することができint2()
、デフォルトの関数をbase=2
渡しました:
def int2(x, base=2): return int(x, base)
このように、我々は、バイナリは非常に便利です変換します。
>>> int2('1000000')
64
>>> int2('1010101') 85
functools.partial
私たち自身の定義を必要としない、私たちは部分関数の作成を支援することですint2()
、あなたが直接、新しい関数を作成するには、次のコードを使用することができますint2
:
>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000') 64 >>> int2('1010101') 85
だから、簡単な要約functools.partial
役割のは、固定(で、設定されたデフォルト値)の機能にいくつかのパラメータを置くことである新しい関数を返す、容易になります。この新しい関数を呼び出します。
これは、上記の新しいことに注目int2
機能は、だけでbase
デフォルト値をリセットするためのパラメータ2
が、他の値は、関数呼び出しに渡すことができます。
>>> int2('1000000', base=10)
1000000
最後に、あなたは部分関数を作成するときに、実際に関数オブジェクトを受け取ることができ、*args
そして**kw
これらの3つのパラメータは、渡されたとき:
int2 = functools.partial(int, base=2)
実際にはキーワードパラメータがint()関数を固定しbase
、それは次のようになります。
int2('10010')
それはと同等です。
kw = { 'base': 2 }
int('10010', **kw)
ときに着信:
max2 = functools.partial(max, 10)
実際には、それがされます10
よう*args
一部自動的に左に追加し、それは次のようになります。
max2(5, 6, 7)
それはと同等です。
args = (10, 5, 6, 7)
max(*args)
結果10
。
概要
関数のパラメータの数が多すぎる必要簡潔、あれば、functools.partial
あなたは新しい関数を作成することができ、この新しい機能は、元の関数のパラメータの固定の一部とすることができるお電話の際はそんなに単純で住んでいました。
オリジナルURLます。https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145929440