Python's 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.)
Python:
>>> l = lambda _: True>>> l()<lambda>() missing 1 required positional argument: '_'>>> l("foo")True
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()True
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.
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.