44

Python初心者の質問、なぜこの構文は無効なのですか:lambda: pass、これdef f(): passは正しいのですか?

あなたの洞察に感謝します。

4

3 に答える 3

47

ラムダには式のみを含めることができます。基本的には、代入ステートメントの右側に表示されるものです。passは式ではありません-値に評価されず、a = pass決して合法ではありません。

ラムダは暗黙的に本体の結果を返すため、これについての別の考え方は、lambda: pass実際には次のようになります。

def f():
    return pass

これは意味がありません。何らかの理由で実際にno-opラムダが必要な場合は、lambda: None代わりに必要です。

于 2012-10-14T14:24:29.013 に答える
45

コロンの後に戻り値を入力する必要があるため、これはエラーです。

lambda: pass

等しい:

def f():
   return pass

それは確かに意味がなく、SyntaxError同様に生成されます。

于 2012-10-14T14:24:23.897 に答える
23

returnステートメントのない関数の戻り値はですNonepassこれは、OPで定義されている単純な関数から確認できます。

>>> def f():
...     pass
... 
>>> print f()
None

この「no-op」関数と同等のラムダ関数を探している場合は、次を使用できます。

lambda: None

例えば:

>>> f = lambda: None
>>> print f()
None
于 2016-07-27T14:27:18.200 に答える