Daily Archives: 2011/11/24

Python の lambda式

まとめながら理解してみた。 Q. lambda 関数とdef ステートメントの関係は? 両者を比較してください。 lambda と def は、どちらも関数オブジェクトを作ることができる、という点では共通しています。ただし、lambda は式なので、def ステートメントとは違い、文法的にdefステートメントが使用できない箇所でも使えます。たとえば、リストのリテラル、関数の呼び出しコードなどの中でも使えるのです。lambda は必ず使わなくてはならない、というものではありません。lambda と同等のコードは、必ずdef を使って書くことができるからです。ただ、def を使った場合、関数には最初からすべて名前がある、ということになります。lambda は、特定の場所だけで使われ、他に応用される可能性の低い、簡単な関数を作る場合に便利です。lambda で得られる戻り値は1つに限定されています。ステートメントのブロックには対応できないので、大規模な関数の作成には向きません。 by はじめてのPython 第3版 pp.405