lambda式は
Pythonのlambda式は、勝手にJavaScriptの
匿名関数とイコールだと思っていたけど、
ずいぶんと違っていて、単一の式しか使えないらしい。
var f = function(x, y){if(x > y){return x;}else{return y;}}; f(3, 4);
なんてのが、
f = (lambda x, y : if x > y : x else y) f(3, 4)
なんて書けるかと思ったら、エラーになった。
ifはステートメントで、lambdaの中には式しかかけないのか。
ブール演算ってのを使うとかけるようだ。
f = (lambda x, y : ((x > y) and x) or y f(3, 4)
でいけるようだ。
まず、(x > y)が評価され、Trueの場合は(True and x)は右側のxを返す。
Falseの場合、(False and x)はショートサーキット評価により、
Falseとなり、False or yは、右側の評価をしてTrueと評価されyの値を返す。
ってな具合だ。
なるほど。ひとつ学んだ。