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の値を返す。
ってな具合だ。

なるほど。ひとつ学んだ。