Python匿名関数

922 ワード

関数を転送する場合、表示せずに関数を定義する必要がなく、匿名関数を直接転送するのが便利です.Pythonでは匿名関数のサポートが限られています.やはりmap()関数を例に、f(x)=xを計算する²の場合、f(x)の関数を定義する以外に、匿名の関数を直接入力することもできます.
>>> list(map(lambda x: x *x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]

比較すると、匿名関数lambda x: x * xは実際には次のようになります.
def f(x):
    return x * x

キーワードlambdaは匿名関数を表し、コロンの前のxは関数パラメータを表す.匿名関数には、returnと書かずに式が1つしかないという制限があります.戻り値は式の結果です.匿名関数を使用すると、関数に名前がないため、関数名の競合を心配する必要はありません.また、匿名関数も関数オブジェクトです.匿名関数を変数に割り当て、変数を再利用して関数を呼び出すこともできます.
>>> f = lambda: x: x * x
>>> f
 at 0x101c6ef28>
>>> f(5)
25

同様に、匿名関数を戻り値として返すこともできます.
def build(x, y):
    return lambda: x * x + y * y

小結
Pythonの匿名関数のサポートは限られており、簡単な場合にのみ匿名関数を使用することができます.