てきとうなメモ

本の感想とか技術メモとか

Pythonのlambda

Pythonのlambdaは式しか書けないことを知った.

lambda_form     ::=  "lambda" [parameter_list]: expression
old_lambda_form ::=  "lambda" [parameter_list]: old_expression

(略)
Note that functions created with lambda forms cannot contain statements.

5. Expressions ― Python v2.6.4 documentation

代入などは式ではなく文になるためちょっと複雑なことをしようとするとlambdaでは書けなくなる.

それでも書きたい場合はこことかこことかを参照.かなり読みにくくなるけど.

py3kでも同様で今後もそういう方針らしい

But it is here to stay as-is. Adding support for statements is a non-starter. 
It would require allowing multi-line lambda expressions which would mean a 
multi-line expression could suddenly exist. That would allow for multi-line 
arguments to function calls, for instance. That is just plain ugly.

lambdaの部分が複数行になっちゃうと,map関数とかの関数の引数部分も長くなって読みにくいよねということ.それは確かにそうなんだけども,ちょっとした再利用しないコードを書く場合には不便だなあと.あと,Rubyみたいに最後にブロックを書くとシーケンシャルに読めるのでそんなに読みにくくない気がする.lambdaとは意味が少し異なるものになりそうだけども