Search code examples
pythonlambda

Python's lambda with underscore for an argument?


What does the following code do?

a = lambda _:True

From what I read and tested in the interactive prompt, it seems to be a function that returns always True.

Am I understanding this correctly? I hope to understand why an underscore (_) was used as well.


Solution

  • 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