Pythons lambda with underscore for an argument?

Pythons lambda with underscore for an argument?

The _ is variable name. Try it.
(This variable name is usually a name for an ignored variable. A placeholder so to speak.)


>>> l = lambda _: True
>>> l()
<lambda>() missing 1 required positional argument: _

>>> l(foo)

So this lambda does require one argument. If you want a lambda with no argument that always returns True, do this:

>>> m = lambda: True
>>> m()

Underscore is a Python convention to name an unused variable (e.g. static analysis tools does not report it as unused variable). In your case lambda argument is unused, but created object is single-argument function which always returns True. So your lambda is somewhat analogous to Constant Function in math.

Pythons lambda with underscore for an argument?

it seems to be a function that returns True regardless.

Yes, it is a function (or lambda) that returns True. The underscore, which is usually a placeholder for an ignored variable, is unnecessary in this case.

An example use case for such a function (that does almost nothing):

dd = collections.defaultdict(lambda: True)

When used as the argument to a defaultdict, you can have True as a general default value.

Leave a Reply

Your email address will not be published. Required fields are marked *