2017-04-19 6 views
0

ラムダは私にとっては新しいもので、ラムダの仕組みを普通の関数に変換することでラムダの仕組みを理解しようとしています。私はこのコードを見て:これは、ラムダ構造体を通常の関数に変換する正しい方法ですか?

def add(n): 
    return lambda x: n+x 

print add(5)(3) 
#output is 8 

だから私は、関数の内部にある通常の関数にこのコードを変換しようとした:

def add(n): 
    def other(x): 
     return n+x 
    return other(3) 

print add(5) 
#output is 8 

は、それらの出力は同じであったが、私はラムダを学んで新たなんだから、これを変換する正しい方法ですか?それとも私のやり方よりも良い方法がありますか?

+0

これらの2つのコードは異なります。そのうちの1つはadd関数の外にあり、もう1つはadd関数の内側にあるからです。最初のコードブロックでは、 'add'の定義を変更せずに4と4を追加できます。 2番目のコードブロックでは、数字のうちの1つだけを変更することができます。最大で4と3を加算します。 – Kevin

+0

ありがとう:-)))))))))))))) –

答えて

0

2番目の例は有効なコードですが、ラムダを使用する目的に反します。

多くの場合、ラムダを返して、実行の一部を後で遅延させます。最初の例でそれを見ることができます。 addは数式演算を行う関数を返します。呼び出し側は、返された関数を今すぐ呼び出すことができます。または、データの2番目の部分があるまで実行を遅らせたい場合は、後で呼び出すことができます。

本当に、あなたの第二の例は、単に次のようになります。

def add(n): 
    return n + 3 

それはすぐにとにかくラムダを呼び出しますので。

+1

ありがとう:-)))))))))))))) )) –

関連する問題