Python初心者の質問、なぜこの構文が無効なのですか:_lambda: pass
_、これは:def f(): pass
は正しいですか?
あなたの洞察をありがとう。
コロンの後に戻り値を配置する必要があるため、これはエラーです。
lambda: pass
等しい:
def f():
return pass
これは実際には意味がなく、SyntaxError
も生成します。
ラムダには式のみを含めることができます-基本的に、割り当てステートメントの右側に表示できるもの。 pass
は式ではありません-値に評価されず、a = pass
は決して有効ではありません。
ラムダはボディの結果を暗黙的に返すため、lambda: pass
は実際には次と同等です。
def f():
return pass
これは意味がありません。なんらかの理由で何もしないラムダが本当に必要な場合は、代わりにlambda: None
を実行してください。
return
ステートメントのない関数の戻り値はNone
です。これは、OPで定義されている単純なpass
関数から確認できます。
>>> def f():
... pass
...
>>> print f()
None
この「no-op」関数と同等のラムダ関数を探している場合は、次を使用できます。
lambda: None
例えば:
>>> f = lambda: None
>>> print f()
None