2016年5月2日

考察・ラムダ式

Python の公式のスタイルガイドである PEP 8の中で、ラムダ式について触れられている箇所の内容について考えてみます。


PEP 8 ではラムダ式を変数に代入することを許可していません。PEP 8 で挙げられている例を以下に引用します。

Yes:
def f(x): return 2 * x

No:
f = lambda x: 2 * x
長くなったラムダ式を一旦変数に代入したり、同じラムダ式を繰り返し使う場合に一度変数に代入するのは、それほど悪くない使い方のようにも思えます。
しかし、PEP 8 では、
  • 関数の方がトレースし易い
  • ラムダ式の利点は式の中に埋め込み可能である点。変数に代入するとその利点が活かせない
という理由のため、ラムダ式を変数に代入すべきでない、としています。


ここから「Python はラムダ式を好きじゃない」ということが分かります。
Python では関数内で関数を定義可能です。そして、ラムダ式でできることは関数でもできます。それなら全て関数で書けばいいじゃないか、というのが根本的な考えです。
ただし、sorted() の key のように、ラムダ式を使うことで記述がグッと簡潔になる場面があります。このような時にはラムダ式を使ってもいいよ、というのが Python のラムダ式に対する姿勢です。

0 件のコメント:

コメントを投稿