How do you call a lambda function?

None of the lambda function examples in this lesson call on a lambda function with specific inputs to generate specific outputs like you would with a traditional function definition. When I try doing this, I don’t get what I expect. For example, this lesson defines a function called multiply() using traditional syntax…

def multiply(a, b):
    return a * b

… which I can call as follows…

…and I get the output 6, which is expected.

But if I try something similar with a lambda function…

a = 2
b = 3
multiply = lambda a, b : a * b

…I get something different…

<function __main__.<lambda>(a, b)>

It seems like a lambda function is not made to be called upon directly to generate an output. It’s made to be passed as a variable so some other function can call it to make an output?

In the lambda function above, no name is assigned as in traditional function. Only a variable multiply is assigned which simply returns function object.
If you print traditional multiply function it will produce <function multiply at 0x7fe3cafb18c8>
and if we print lambda function <function <lambda> at 0x7fe3ccc69730>
Look at the difference of function name in both . One is multiply whereas other is <lambda> ie. Anonymous Function with no name
So call lambda function as like the traditional function

Just add (), the sugar for __call__ to multiply. so you call it like multiply(), same syntax as the multiply defined the non lambda way def multiply.

Practically I don’t see much value in lambda, they are 1-liners putting together the function signature, body, and return statement, making it much harder to read at a glance than the def way.

That’s good to know. Thanks!

That clears things up a lot. Thanks!