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