関数を渡す場合、関数を明示的に定義する必要がない場合があります。匿名関数を直接渡す方が便利です。
Python では、匿名関数のサポートが制限されています。さらにmap()関数を例にとると、f(x)=x2を計算するとき、f(x)の関数を定義することに加えて、匿名関数を直接渡すこともできます:
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81]
As比較すると、匿名関数 lambda x: x * x は実際には次のようになります:
def f(x): return x * x
キーワード lambda は匿名関数を表し、コロンの前の x は関数パラメータを表します。
匿名関数には制限があります。つまり、式は 1 つだけ持つことができます。return を記述する必要はありません。戻り値は式の結果です。
匿名関数を使用すると、関数には名前がないため、関数名の競合を心配する必要がないという利点があります。さらに、匿名関数も関数オブジェクトです。匿名関数を変数に代入し、その変数を使用して関数を呼び出すこともできます:
>>> f = lambda x: x * x >>> f <function <lambda> at 0x101c6ef28> >>> f(5)25
同様に、匿名関数を関数として返すこともできます。
def build(x, y): return lambda: x * x + y * y
セキュリティと制御性を向上させるために詳細をカプセル化します。多くの場合、グローバル スコープ内の関数の外で使用されるため、グローバル スコープへの変数や関数の追加が多すぎることが制限されます。
グローバル スコープでブロック レベルのスコープを使用すると、匿名関数への参照がなく、関数が実行されている限りそのスコープ チェーンはすぐに破棄できるため、クロージャがメモリを占有する問題を軽減できます。
ブロックレベル (プライベート) スコープを模倣:
function box(){ for(var i=0;i<5;i++){ //块级作用域(js无) } var i //即便重新声明,也不会影响之前的值 alert(i);//5 } box();
以上が匿名関数とは何ですか? Python の匿名関数の用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。