時々、次のように、プレースホルダに「何もしない」ラムダ式を作成したいことがあります。
def do_nothing(*args):
pass
しかし、ラムダ式はコロンの後のものを返そうとするため、次の構文は不正であり、 を返すことはできませんpass
。
do_nothing = lambda *args: pass
そこで、次の表現が上記の表現の代わりに適切かどうか疑問に思いました。
do_nothing = lambda *args: None
do_nothing
上記の関数は技術的には を返すので、None
を返すラムダ式を作成してNone
プレースホルダー ラムダ式として使用しても問題ありませんか? それとも、それは悪い習慣ですか?
ベストアンサー1
これ:
def do_nothing(*args):
pass
は以下と同等です:
lambda *args: None
若干の違いはありますが、一方は でlambda
、もう一方は ではありません。(例えば、 は関数では 、ラムダでは に__name__
なります。)が重要な場合は を忘れないでください。 Python の関数は を明示的に返しません。これはdo_nothing
<lambda>
**kwargs
return <x>
None
ここ:
呼び出しは、例外が発生しない限り、常に何らかの値(None の可能性もあります)を返します。
同様の関数をデフォルト値として使用しました。たとえば、次のようになります。
def long_running_code(progress_function=lambda percent_complete: None):
# Report progress via progress_function.