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.