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 件のコメント:
コメントを投稿