lambda式
lambda式とは名前のない関数を返す式、Javascriptの無名関数のように使うことができるもの(似て非なるもの)、という感じでしょうか。
というわけで無名関数を代入するやり方で関数定義してみる。
f = lambda x,y: x + y print f(3,4) #7 print f(5,8) #13
Javascriptの無名関数との違いはlambda式は「式」なので内部でreturn文により値を返さなくてもそれ自体が値を返していると言うことでしょうか。
上の例をJavascriptで書くとすると
var f = function(x,y){ return x + y; } window.alert(f(3,4)); window.alert(f(5,8));
このように無名関数内でreturn文を使って値を返す必要がありますが、pythonで
#まちがい f = lambda x,y: return x + y
はエラーになります。
Javascriptの無名関数同様その場で実行する書き方もできます。
f = (lambda x,y: x + y)(6,5) print f #11
ただしlambda式はあくまで単一の「式」なのでブロック構造を持つことはできないようです。例えばJavascriptであれば
var a = [1,2,4,6,9]; (function(){ for (var i = 0; i < a.length; i++){ a[i]++; } })();
というような内部にブロックをもつ書き方もできますがPythonのlambda式ではできません。