概要
仕事の関係で Python の lambda に関して最近質問された。lambda は結構読みずらいようで質問の回数が多い気がする。毎回似たような質問に答えるのが面倒なので、回答用に概要をメモしておく。
Python の lambda
lambda は無名関数を作成するための機能。
def a(b):
return c
と同じ物をが、lambda だと以下のように記述できる。
a = lambda b: c
簡単なサンプル
とりあえず簡単なサンプルが以下。時々 lambda は改行ができないと思っている人がいるみたいだが、括弧でかこめば普通に改行できる。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
class TestLambda(unittest.TestCase):
def test_basic(self):
# def を利用
def a(b):
return b * 10
self.assertEqual(20, a(2))
# lambda を利用
a = lambda b: b * 2
self.assertEqual(4, a(2))
# 括弧を利用すると途中改行が可能
a = (lambda b:
b * 4)
self.assertEqual(8, a(2))
if __name__ == '__main__':
unittest.main()
まとめ
確かに lambda を使うべき場面もあるが、普通はlambda はそんなに多用しない方が良いと思う。利用しても、意味ない場合も多い。
変な所で、変なテクニック使ってもおもしろくともなんとも無いので、普通に読みやすく書くのが一番良い。
あと、書いたは良いが、質問される内容はもっと高度になる場合が多いので、このエントリは自分の手抜き用には役に立たないかもしれない。