1. ホーム
  2. python

[解決済み] Pythonで適切な「何もしない」ラムダ式は?

2023-01-01 01:19:01

質問

私は時々、「何もしない」ラムダ式を作りたいと思うことがあります。

def do_nothing(*args):
    pass

しかし、ラムダ式はコロンの後にあるものを返そうとするので、次の構文は不正です。 pass .

do_nothing = lambda *args: pass

そこで思ったのですが、次のような表現は上記の置き換えとして適切でしょうか?

do_nothing = lambda *args: None

というのは do_nothing 関数は技術的には None を返すラムダ式を作ってもいいのでしょうか? None を返すラムダ式を作り、プレースホルダのラムダ式として使ってもいいのでしょうか?それともバッドプラクティスでしょうか?

どのように解決するのですか?

これです。

def do_nothing(*args):
    pass

とは等価である。

lambda *args: None

いくつかの細かい違いはありますが、一方は lambda であることと、そうでないことです。(例えば __name__do_nothing となり、関数上では <lambda> を使います)。忘れちゃいけないのが **kwargs を忘れないでください。Pythonの関数で、明示的に return <x> を返す None . これは これは :

<ブロッククオート

例外が発生しない限り、呼び出しは常に何らかの値、場合によってはNoneを返します。

似たような関数をデフォルト値として使っていて、例えば

def long_running_code(progress_function=lambda percent_complete: None):
    # Report progress via progress_function.