Python's lambda with underscore for an argument? Python's lambda with underscore for an argument? python python

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.