Anonymous functions - the  lambda keyword

The keyword lambda is used in Python to define anonymous functions, that is; functions without a name and described by a single expression. You might just want to perform an operation on a function that can be expressed by a simple expression without naming this function and without defining this function by a lengthy def block.

Note

The name lambda originates from a special branch of calculus and mathematical logic, the Anonymous functions - the  lambda keyword-calculus.

For instance, to compute the following expression, we may use SciPy’s function quad, which requires the function to be integrated as its first argument and the integration bounds as the next two arguments:

Anonymous functions - the  lambda keyword

Here, the function to integrate is just a simple one-liner and we use the lambda keyword to define it:

import scipy.integrate as si
si.quad(lambda x: x ** 2 + 5, 0, 1)

The syntax is as follows:

lambda parameter_list: expression

The definition of the lambda function can only consist of a single expression and in particular, cannot contain loops. lambda functions are, just like other functions, objects and can be assigned to variables:

parabola = lambda x: x ** 2 + 5
parabola(3) # gives 14

The lambda construction is always replaceable

It is important to note that lambda construction is only syntactic sugar in Python. Any lambda construction may be replaced by an explicit function definition:

parabola = lambda x: x**2+5 
# the following code is equivalent
def parabola(x):
    return x ** 2 + 5

The main reason to use a construction is for very simple functions, when a full function definition would be too cumbersome.

lambda functions provide a third way to make closures as we demonstrate by continuing with the previous example:

We use the sin_omega function to compute the integral of the sine function for various frequencies:

import scipy.integrate as si
for iteration in range(3):
    print(si.quad(lambda x: sin_omega(x, iteration*pi), 0, pi/2.) )
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.152.58