亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

無名関數(shù)

非常に短いコールバック関數(shù)を定義することを考えたことはありますが、def を使用してそのような長(zhǎng)い関數(shù)を記述したくないですか? ショートカットはありますか?答えは「はい」です。

Python はラムダを使用して匿名関數(shù)を作成します。つまり、関數(shù)の定義に標(biāo)準(zhǔn)形式の def ステートメントは使用されなくなりました。

匿名関數(shù)には主に次の特徴があります。

lambda は単なる式であり、関數(shù)本體は def よりもはるかに単純です。

ラムダの本體は式であり、コード ブロックではありません。ラムダ式にカプセル化できるロジックは限られています。

ラムダ関數(shù)には獨(dú)自の名前空間があり、獨(dú)自のパラメータ リストの外部またはグローバル名前空間內(nèi)のパラメータにアクセスできません。

基本構(gòu)文

lambda [arg1 [,arg2,.....argn]]:expression

例:

# -*- coding: UTF-8 -*-
sum = lambda num1 , num2 : num1 + num2;
print( sum( 1 , 2 ) )

出力結(jié)果:

3

注:ラムダ式を使用すると、次のことが可能になります。単純な関數(shù)を定義できますが、その用途は限定されています。指定できる式は 1 つだけであり、その値が最終的な戻り値となります。つまり、複數(shù)のステートメント、條件式、反復(fù)、例外処理などの他の言語機(jī)能を含めることはできません。

匿名関數(shù)には、注意が必要な特別な問題があります。たとえば、上記の例を変更します:

# -*- coding: UTF-8 -*-
num2 = 100
sum1 = lambda num1 : num1 + num2 ;
num2 = 10000
sum2 = lambda num1 : num1 + num2 ;
print( sum1( 1 ) )
print( sum2( 1 ) )

出力はどうなると思いますか?最初の出力は 101、2 番目の出力は 10001、結(jié)果はそうではありません。出力結(jié)果は次のようになります:

10001
10001

これは主に、ラムダ式の num2 が自由変數(shù)であり、値がバインドされているためです。 runtime を定義する際にバインドするのではなく、関數(shù)のデフォルト値パラメータ定義とは異なります。したがって、この狀況が発生した場(chǎng)合は、最初の解決策を使用することをお?jiǎng)幛幛筏蓼埂?

學(xué)び続ける