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.
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:
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
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.) )
18.118.152.58