A lambda function is an anonymous function; that is, it has no intrinsic name. It is a compact way to define a function inline without using the def statement. Use a lambda function if its body is a simple expression.
lambda args: return_expression
The lambda expression above in Python behaves like the code below.
def <lambda>(args): return return_expression
Note that unlike with
def, the lambda function does not automatically get bounded to a name in the frame (hence its anonymity). In an environment diagram, a new function is created in the heap when the lambda expression gets evaluated.
>>> def call_f(f): ... return f() ... >>> call_f(lambda: 3) 3
You can bind a variable name to a lambda function if you want to refer to it in the future:
>>> even = lambda x: x % 2 == 0 >>> even(40) True >>> even(5) False
You can also call lambda functions like regular functions:
>>> (lambda x: x % 2 == 0)(40) True