A suitable 'do nothing' lambda expression in python?

I sometimes find myself wanting to make placeholder 'do nothing' lambda expressions, similar to saying:

def do_nothing(*args):
    pass

But the following syntax is illegal since lambda expressions attempt to return whatever is after the colon, and you can't return pass.

do_nothing = lambda *args: pass

So I was wondering, would the following expression be a suitable replacement for the above?

do_nothing = lambda *args: None

Since the do_nothing function above technically returns None, is it okay to make a lambda expression that returns None to use as a placeholder lambda expression? Or is it bad practice?


This:

def do_nothing(*args):
    pass

is equivalent to:

lambda *args: None

With some minor differences in that one is a lambda and one isn't. (For example, __name__ will be do_nothing on the function, and <lambda> on the lambda.) Don't forget about **kwargs, if it matters to you. Functions in Python without an explicit return <x> return None. This is here:

A call always returns some value, possibly None, unless it raises an exception.

I've used similar functions as default values, say for example:

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

If you truly want a full do nothing function, make sure to gobble up *args and *kwargs.

noop = lambda *args, **kwargs: None

In all its glorious action

>>> noop = lambda *args, **kwargs: None
>>> noop("yes", duck_size="horse", num_ducks=100)
>>>

Side Note

Since the accepted answer is only using *args, I must point out that you will do yourself a favor for the future by including the **kwargs handling. If you ever try to use the noop somewhere deep away in your code and you forgot that it doesn't take kwargs, it will be quite the Exception to doing nothing:

In [2]: do_nothing('asdf', duck="yes")
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-efbd722f297c> in <module>()
----> 1 do_nothing('asdf', duck="yes")

TypeError: <lambda>() got an unexpected keyword argument 'duck'

Sometimes lambda functions are used for data transformation, and in that case 'do nothing' means to return the input, i.e.

lambda x: x

To return none you can write

lambda x: None