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