ラムダ式 Lambda Expression
通常defを使った関数の定義はdefの直後に名前をつける必要がある。
しかし、lambdaを使えば名前をつける必要がなくなる。無名関数とも呼ばれる。
lambda式のメリットとして、関数を式(expression)として扱うため、変数に代入できるようになり、プログラムを簡潔にできる。
書式は、lambda 引数のリスト: 引数を使った式(戻り値)
例:
>>> def add(a, b):
return a + b
この関数をlambdaを使うと1行で表せる。
>>> add = lambda a, b: a + b
連続して使うこともできる。ただし、分かりづらいのでなるべく避けること。
あくまでlambdaを使うときはシンプルな表現として、引数として渡したいときか戻り値として渡したいときが多い。
>>> compose = lambda f: lambda g: lambda x: f(g(x)) # これは避けた方が良い
特にpythonではあまりlambdaは好まれないので、defをよく用いる。
また、lambda式ではstatementは使えないので、while文などは使えない。
また引数なしでも使える。
>>> say_hello = lambda: 'hello'
>>> say_hello
<function <lambda> at 0x10f803488>
>>> say_hello()
'hello'
>>>
練習問題
空欄を埋めよ。
x = lambda x, y: lambda x- y
result = (lambda ________, question: one(________)(x, 4)
# 以下解答
x = lambda x, y: lambda x- y
result = (lambda one, question: one(46, question)())(x, 4)