今更のlambda式
『lambda式』を知ってはいたが、「無名関数を定義できる」としか理解しておらず、
(他の人も言っておりますが)使いどころが良くわからないのもあって
実際に使ったことがなかったのです。
ですが前回書いたCheckiOにてlambda式で書いているものが
ちょっとかっこよく見えたので使ってみようかなと。
書いてみる
とりあえず基本から・・・
test.py
hoge = lambda x : print x*2
hoge(5)
実行すると
File "test.py", line 2
hoge = (lambda x : print x*2)
失敗するとは思ってなかった。。。
で!
調べてみると↓
lambda式のボディ部分も「式」
return しなくても演算結果が返ってくる。
ステートメントを書くことは出来ない(return,print,if~else~)が、工夫すれば同様のことは出来る。
なるほど。知らなかったよ。
修正
test.py
hoge = lambda x : x*2
print hoge(5)
実行すると
10
成功。よかった。
まとめ・・・の前に
なんでステートメントが書けないのか気になったので調べてみた。
http://docs.python.jp/2/faq/design.html#id6
あくまで「関数の速記法」としての位置付けなので、
式だけ書ければ役割としては十分ということなのですね。
最初に書いた「使いどころが良くわからない」ってことと合わせて
いろいろ納得できました。
まとめ
やっぱ使ってみるって大事ですね。
他に「知ってるけど使ったことないや」ってのがないか探してみようと思います。