Pythonは匿名またはインライン関数をどう定義しますか?


問題
あなたはsort()の操作のために短いコールバック関数を作りたいですが、defでシングルライン関数を書きたくないです。あるショートカット方式でインライン方式でこの関数を作成したいです。
ソリューション
いくつかの関数が簡単で、一つの表式の値だけを計算する場合、代わりにlamban表現を使うことができます。たとえば:

>>> add = lambda x, y: x + y
>>> add(2,3)
5
>>> add('hello', 'world')
'helloworld'
>>>
ここで使っているlamda表現は以下の効果と同じです。

>>> def add(x, y):
...   return x + y
...
>>> add(2,3)
5
>>>
lamda表現の典型的な使用シーンは、並べ替えやデータreduceなどである。

>>> names = ['David Beazley', 'Brian Jones',
...     'Raymond Hettinger', 'Ned Batchelder']
>>> sorted(names, key=lambda name: name.split()[-1].lower())
['Ned Batchelder', 'David Beazley', 'Raymond Hettinger', 'Brian Jones']
>>>
討論する
lamda表式は簡単な関数を定義することができますが、その使用には制限があります。単一の表現しか指定できません。値は最後の戻り値です。つまり、他の言語特性は含まれません。複数の語句、条件式、反復、および異常処理などが含まれます。
lamda表式を使わずに、ほとんどのpythonコードを作成できます。しかし、表現値を計算するための短い関数を大量に作成したり、ユーザーがフィードバック関数を提供するためのプログラムを必要とする場合には、lamda表現の影が見られます。
以上がPythonです。匿名またはインライン関数の詳細をどう定義しますか?Pythonについては匿名またはインライン関数を定義します。他の関連記事に注目してください。