pbreit wrote:
I see lambda used quite a bit and don't totally understand the concept.
Is there a simple rule to follow to know when it is necessary to use?
Sometimes you need to pass a function as an argument to another
function. In that case you have a choice to
1. define a separate function, and pass that to the function you are
calling:
def my_fun(x, y, operation):
return operation(x, y)
The function my_fun takes two numbers x and y, and one function
"operation" that is applied to x and y
You can e.g. use it as follows to perform an addition:
def my_addition(x, y):
return x+y
>>> print my_fun(1, 2, my_addition)
3
2. you can omit defining the separate function "my_addition" and pass in
an anonymous function (defined using lambda) instead:
def my_fun(x, y, operation):
return operation(x,y)
>>> print my_fun(1,2, lambda x,y : x+y)
3
So lambda is used to define a function on-the-spot, without even
bothering to give it a name of its own (an "anonymous" function). The
"lambda x,y" part tells the system that you define an anonymous function
expecting two arguments named x and y. The x+y part tells the system
that the anonymous function returns the sum of its x and y arguments.
Hope this helps,
Best regards,
Stefaan.