私は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である理由は何ですか?
私は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である理由は何ですか?
最初の引数としてi
を渡しました。これは、ラムダ内のy
がi
の値にバインドされていることを意味します。そしてy
にi
を掛けます。結果は5 * 5、または25となります。
これらは実際に正しい方法で動作しています。あなたの最初のラムダ式に似ている:あなたはy
は、関数の引数で見ることができるように
def f(y):
return y * i
。そして、argument
* i
(i
の値が何であれ)を返しています。
だから(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が返されます。