2017-03-25 13 views
0

私はPythonのノブです。これらは私の変数です:Pythonラムダ関数が正しく動作しません

>>> y=1 

>>> i=5 

私はラムダ関数を使用します。

>>> (lambda y: y*i)(i) 

>>> 25 

はなぜ出力をy 25の場合= 1、I = 5です???????

私は数字を使用する場合:

>>> (lambda y: 1*i)(i) 

>>> 5 

はこの正常ですか?最初のケースではyが5、もう一方では1である理由は何ですか?

答えて

0

最初の引数としてiを渡しました。これは、ラムダ内のyiの値にバインドされていることを意味します。そしてyiを掛けます。結果は5 * 5、または25となります。

2

これらは実際に正しい方法で動作しています。あなたの最初のラムダ式に似ている:あなたはyは、関数の引数で見ることができるように

def f(y): 
    return y * i 

。そして、argument * iiの値が何であれ)を返しています。

だから(lambda y: y*i)(i)f(i)と同じです。あなたがいる

def g(y): 
    return 1 * y 

: - 今、あなたはすでに5.だから、基本的にf(5)だとしてiの値を設定し、あなたに値を返すしている(5 * 5)> 25.

2番目の式がに似ていますをg()に渡します。 iの値が5なので、g(5)を呼び出すようなもので、値(1 * 5) - > 5が返されます。

関連する問題