why - what is the difference for python between lambda and regular function?
why use lambda functions (2)
lambda
create anonymous function. This idea has been taken from functional programming languages. In this way you can create and pass the function to other functions like map
and filter
. ( look here )
You can pass normal functions to these functions too, but since mostly their simple and they have used nowhere else, it's inconvenient to through to whole process of definfing a new function.
As an example take a look at this :
>>> a = [1, 2, 3, 4]
>>> print map( lambda x : x*2 + 1, a )
[3, 5, 7, 9, 11]
I'm curious about the difference between lambda
function and a regular function (defined with def
) - in the python level. (I know what is the difference for programmers and when to use each one.)
>>> def a():
return 1
>>> b = lambda: 1
>>> a
<function a at 0x0000000004036F98>
>>> b
<function <lambda> at 0x0000000004031588>
As we can see - python knows that b
is a lambda
function and a
is a regular function. why is that? what is the difference between them to python?
The only difference is that (a) the body of a lambda can consist of only a single expression, the result of which is returned from the function created and (b) a lambda
expression is an expression which evaluates to a function object, while a def
statement has no value, and creates a function object and binds it to a name.
In all other material respects they result in identical objects - the same scope and capture rules apply. (Immaterial differences are that lambda
-created functions have a default func_name
of "<lambda>"
. This may affect operation in esoteric cases - e.g. attempts to pickle functions.).