Python で適切な「何もしない」ラムダ式はありますか? 質問する

Python で適切な「何もしない」ラムダ式はありますか? 質問する

時々、次のように、プレースホルダに「何もしない」ラムダ式を作成したいことがあります。

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>**kwargsreturn <x>Noneここ:

呼び出しは、例外が発生しない限り、常に何らかの値(None の可能性もあります)を返します。

同様の関数をデフォルト値として使用しました。たとえば、次のようになります。

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

おすすめ記事