Python Lambda Closure

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

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:

Python
 pythonCopylambda 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.

Python
 pythonCopydef total(a):
    return a + 5


print(total(10))

Output:

 textCopy15

Add multiple arguments and return the result.

Python
 pythonCopydef total(a, b, c):
    return a + b + c


print(total(10, 15, 20))

Output:

 textCopy45

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:

Python
 pythonCopydef total(a, b, c):
    return a + b + c

It is equivalent to this:

Python
 pythonCopydef 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.

Python
 pythonCopydef outerFunc(txt):  # outer enclosing function
    def innerFunc():  # nested function
        print(txt)

    innerFunc()


outerFunc("Hello World")

Output:

 textCopyHello 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.

Python
 pythonCopydef outerFunc(txt):  # outer enclosing function
    def innerFunc():  # nested function
        print(txt)

    return innerFunc


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

Output:

 textCopyHello 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.

Python
 pythonCopydel outerFunc
myFunc()

Output:

 textCopyHello World

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

Python
 pythonCopydef sum(x):
    def total():
        def calc(x):
            return x + 5

        print(calc(x))

    return total


myFunc = sum(5)
myFunc()

Output:

 textCopy10

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

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Rohan Timalsina avatar Rohan Timalsina avatar

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

LinkedIn Website

Related Article - Python Lambda