Python Lambda Closure

Python Lambda Closure

  1. Syntax to Use Lambda Function in Python
  2. Use Lambda Function in Python
  3. Use Closure Function in Python

A lambda function is defined without a name. It is also known as an anonymous function in Python.

We use a def keyword to define a regular function in Python, whereas the lambda keyword is used to define a lambda function.

This tutorial will teach you to use lambda function and closure in Python.

Syntax to Use Lambda Function in Python

The syntax for lambda function in Python is:

lambda arguments : expression

A lambda function can have only multiple arguments but only one expression. It evaluates the expression and returns the result.

Use Lambda Function in Python

The following example adds 5 to the given value and prints the result.

total = lambda a: a+5
print(total(10))

Output:

15

Add multiple arguments and return the result.

total = lambda a,b,c: a+b+c
print(total(10,15,20))

Output:

45

In the above example, lambda a,b,c: a+b+c is a lambda function where a,b,c are arguments and a+b+c is an expression. The expression is calculated and displayed in the output.

The lambda function has no name and is assigned to a variable total.

This line:

total = lambda a,b,c: a+b+c

It is equivalent to this:

def total(a,b,c):
    return a+b+c

Use Closure Function in Python

Before learning closure, you must first understand Python’s concept of a nested function and non-local variable.

A nested function is defined inside another function and can access variables of the enclosing scope.

Such non-local variables can only be accessed within their scope and not outside their scope in Python.

The following example shows a nested function accessing a non-local variable.

def outerFunc(txt): # outer enclosing function

    def innerFunc():  # nested function
        print(txt)

    innerFunc()

outerFunc("Hello World")

Output:

Hello World

As you can see, the nested function innerFunc has accessed the non-local variable txt of the enclosing function outerFunc.

A closure is a function object that can remember values in enclosing scopes even if they go out of scope.

def outerFunc(txt): # outer enclosing function

    def innerFunc():  # nested function
        print(txt)

    return innerFunc

myFunc = outerFunc("Hello World")
myFunc()

Output:

Hello World

In this example, the nested function returns the innerfunc() function instead of calling it. The outerFunc() function is called with the text Hello World and assigned to a variable myFunc.

And when calling myFunc(), the value was remembered outside the scope.

If you remove the original function, the value in the enclosing scope will still be remembered.

del outerFunc
myFunc()

Output:

Hello World

The following is a simple demonstration of using lambda function and closure in Python.

def sum(x):

    def total():
        calc = lambda x: x+5
        print(calc(x))
    return total
myFunc = sum(5)
myFunc()

Output:

10

Now you should know how to use lambda functions and closures in Python. We hope you find this tutorial helpful.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

Related Article - Python Lambda

  • Use Await in a Python Lambda
  • Multiline Lambda Function in Python
  • Lambda Function in Multiple Lines in Python
  • Why There Can't Be a Multiline Lambda in Python
  • The filter() Method and Lambda Functions in Python