初心者がまとめるPython Programmingと時々数学

University of California Berkeleyに在籍中。自分用に勉強内容をまとめるブログ。

ラムダ式 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)