web-dev-qa-db-ja.com

Python:ラムダ形式でステートメントを渡す

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

あなたの洞察をありがとう。

41
Rez

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

lambda: pass

等しい:

def f():
   return pass

これは実際には意味がなく、SyntaxErrorも生成します。

40
etuardu

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

ラムダはボディの結果を暗黙的に返すため、lambda: passは実際には次と同等です。

def f():
    return pass

これは意味がありません。なんらかの理由で何もしないラムダが本当に必要な場合は、代わりにlambda: Noneを実行してください。

43
lvc

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

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

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

lambda: None

例えば:

>>> f = lambda: None
>>> print f()
None
15
Lee Netherton