転送 http://www.cnblogs.com/BeginMan/p/3178103.html
、ラムダ関数
1、ラムダ関数の基礎:
ラムダ関数とも呼ばれる無名関数、すなわち機能がない特定の名前が、この方法は名前defを作成されます。次のように:
「」「名前付き関数foo」「」 DEF fooの():リターン「beginman」#Pythonシングルラインパラメータが1行とタイトルを書き込むことができます
「」「「無名関数のラムダキーワード、機能と上記の式を作成します」」 ラムダ:「beginman」
上記単にラムダで作成した関数オブジェクトであり、それを保存していないにもそれを呼び出すために、時間が回収されます。ここでは、保存してリコール:
バー=ラムダ: 'beginman' 印刷バー()#beginman
上記の例から、構文が容易Pythonのラムダを理解することができます。
ラムダ[ARG1 [、ARG2、ARG3 .... ARGN]:式
ラムダステートメントは、最初のパラメータが結腸である、コロンの右側の複数の、コンマで区切られ、戻り値を持つことができます。ラムダステートメントは、実際に関数オブジェクトを構築しています。
印刷ラムダ: 'beginman' #<0x00B00A30で関数<ラムダ>>
2、パラメータなし
上記の例には、パラメータ、ラムダフロントノーコロンがない場合。
3、パラメータがあります
リターンX + Y:DEF(x、y)の追加 ADD2 =ラムダX、Y:X + Y の印刷ADD2(1,2)#3 リターンX + Y:DEF和(X、Y = 10) 、SUM2 =ラムダXをY = 10:X + Y の印刷SUM2(1)#11 印刷SUM2(1100)#101
二、ラムダとデフ
上記の例では、我々は時にコールスタックバイパス機能割り当て、単純な関数オブジェクトを作成しているラムダ関数の単一ラインバージョンが、パフォーマンス上の理由から、この文で確認することができます。何のpythonラムダと同じではありませんDEF?
図1は、Pythonのラムダは、関数オブジェクトを作成するが、機能オブジェクト識別子を割り当てず、割り当てがDEF変数にオブジェクトを機能します。
以下のような:
>>>デフFOO():リターン'FOO()' >>> fooの <0x011A34F0で関数foo>
2、Pythonのラムダは、それだけで表現だが、それはデフ文です。機能アップとランニングなどラムダ式、呼び出されたときにフレームオブジェクトを作成します。
第三に、ラムダ関数の使用
個人的には次のようだと思います。
図1は、一方向関数のために、保存することができラムダ定義関数を使用するプロセスは、コードをより合理化します。
図2に示すように、改善された性能と帰属された複数のコールの非関数、ラムダ式の場合
注意:for..in..ifができるなら、それはラムダを選択することが最善ではありません
第四に、参照
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html
http://www.cnblogs.com/wanpython/archive/2010/11/01/1865919.html
、ラムダ関数
1、ラムダ関数の基礎:
ラムダ関数とも呼ばれる無名関数、すなわち機能がない特定の名前が、この方法は名前defを作成されます。次のように:
「」「名前付き関数foo」「」 DEF fooの():リターン「beginman」#Pythonシングルラインパラメータが1行とタイトルを書き込むことができます
「」「「無名関数のラムダキーワード、機能と上記の式を作成します」」 ラムダ:「beginman」
上記単にラムダで作成した関数オブジェクトであり、それを保存していないにもそれを呼び出すために、時間が回収されます。ここでは、保存してリコール:
バー=ラムダ: 'beginman' 印刷バー()#beginman
上記の例から、構文が容易Pythonのラムダを理解することができます。
ラムダ[ARG1 [、ARG2、ARG3 .... ARGN]:式
ラムダステートメントは、最初のパラメータが結腸である、コロンの右側の複数の、コンマで区切られ、戻り値を持つことができます。ラムダステートメントは、実際に関数オブジェクトを構築しています。
印刷ラムダ: 'beginman' #<0x00B00A30で関数<ラムダ>>
2、パラメータなし
上記の例には、パラメータ、ラムダフロントノーコロンがない場合。
3、パラメータがあります
リターンX + Y:DEF(x、y)の追加 ADD2 =ラムダX、Y:X + Y の印刷ADD2(1,2)#3 リターンX + Y:DEF和(X、Y = 10) 、SUM2 =ラムダXをY = 10:X + Y の印刷SUM2(1)#11 印刷SUM2(1100)#101
二、ラムダとデフ
上記の例では、我々は時にコールスタックバイパス機能割り当て、単純な関数オブジェクトを作成しているラムダ関数の単一ラインバージョンが、パフォーマンス上の理由から、この文で確認することができます。何のpythonラムダと同じではありませんDEF?
図1は、Pythonのラムダは、関数オブジェクトを作成するが、機能オブジェクト識別子を割り当てず、割り当てがDEF変数にオブジェクトを機能します。
以下のような:
>>>デフFOO():リターン'FOO()' >>> fooの <0x011A34F0で関数foo>
2、Pythonのラムダは、それだけで表現だが、それはデフ文です。機能アップとランニングなどラムダ式、呼び出されたときにフレームオブジェクトを作成します。
第三に、ラムダ関数の使用
個人的には次のようだと思います。
図1は、一方向関数のために、保存することができラムダ定義関数を使用するプロセスは、コードをより合理化します。
図2に示すように、改善された性能と帰属された複数のコールの非関数、ラムダ式の場合
注意:for..in..ifができるなら、それはラムダを選択することが最善ではありません
第四に、参照
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html
http://www.cnblogs.com/wanpython/archive/2010/11/01/1865919.html