Python Lambda Expressions (Anonymous Functions) Tutorial

In this tutorial we learn how to create and use lambda expressions in Python, also known as anonymous functions.

We cover how to declare and pass values to lambdas, as well as using lambdas inside regular functions.

Here's a table of contents of what you'll learn in this lesson:
(click on a link to skip to its section)

Let's jump right in.

What is a lambda expression

A Lambda expression is an anonymous function. That means, it’s a function that has no name, no return statement and only one expression.

With Lambda expressions we can write less code, and the code will be more readable.

How to declare a lambda expression

To create a lambda expression we use the keyword lambda followed by any number of arguments, and then a colon. Finally, we write the expression.

Syntax:
 lambda arguments : expression

The statement above reads: arguments goes to expression

The easiest way to understand a lambda expression is if we convert a normal function into a lambda.

Example:
def square(num):
	return num * num

The example above takes a number and multiplies it by itself, then returns the result.

To convert this into a lambda is easy.

Example:
 lambda num : num * num

Here is another way to look at it.

Example:
 argument num : return num * num

Let’s do another example just to make it clear.

Example:
# normal function
def add(num_1, num_2):
	return num_1 + num_2

# lambda version
lambda num_1, num_2 : num_1 + num_2

Lambdas can take any number of arguments (before the colon), but only one expression (after the colon).

How to pass values to lambda arguments

At the moment our lambdas are set up, but we can’t use them until we can pass values to the arguments.

To pass a value to an argument we assign the lambda to a data container such as a variable. Then we pass the arguments between parentheses when calling the variable.

Syntax:
# declaration
variable_name = lambda argument : expression

# call
variable_name(argument)

The variable name essentially becomes the lambda’s name like a function would have a name.

Example:
# square a num
square = lambda num : num * num

print("Square:", square(5))

# add two numbers
add = lambda num_1, num_2 : num_1 + num_2

print("Add:", add(5, 2))

In the example above we can see that a lambda call looks the same as a function call.

Lambda expression inside a regular function

We can use a lambda inside a normal function. To do this, we declare the lambda inside the normal function’s code block.

Example:
def multi(n):
	return lambda a : a * n

We declare the lambda as a return statement. The argument passed into the function will be placed into the lambda and the lambda is then returned.

Essentially, if we call the function with the argument 5, the function will return the following:

Return:
multi(5)

# returns:
lambda a : a * 5

We now have a lambda returned, but we can’t pass arguments to it so we need to give it a name.

Because the lambda is returned from the function, we can assign the function call to a variable. The variable will then become the lambda name and allow us to pass arguments to it.

Example:
def multi(n):
	return lambda a : a * n

multiplier = multi(5)

# multiplier variable would now
# technically look like this:
multiplier = lambda a : a * 5

In the example above, we only demonstrate what the multiplier variable would look like after the function’s result is assigned to it. Normally we wouldn’t write the lambda function again into the multiplier variable.

Example:
def multi(n):
	return lambda a : a * n

multiplier = multi(5)

print(multiplier(10))

The example above seems silly and more typing than needed, but lambdas inside functions can, in some situations, be very powerful.

When to use lambda expressions

Lambdas make working with certain interfaces simpler and keep code readable and concise.

Lambdas are usually used to:

  • pass arguments to higher-order functions.
  • construct the result of a higher-order function that needs to return a function, as we have done above.

A general rule of thumb is to use lambdas in Python for simple functionality and returning lambdas from other functions. If you don’t want to use them or if you find yourself doing something fairly complex, define a normal function.

Summary: Points to remember

  • A lambda expression is a function that doesn’t have a name or return statement, and only one expression.
  • A lambda is written as argument(s) : return statement.
  • When passing values to a lambda expression, we use a function call syntax.
  • Lambda expressions can be used inside regular functions.