Zone Of Makos

Menu icon

Closure in Python

A closure is a function that retains the values of the variables in its enclosing scope, even after the execution of that scope has completed. In Python, closures are created when a nested function references a value from its outer scope. The nested function is returned from the outer function, along with the reference to the variable, and can be called later, even when the outer function has completed its execution. Closures are a powerful feature in Python that can be used to implement decorators, factory functions, and more.


def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

closure = outer_function(5)
print(closure(3)) # Output: 8

In the example above, the function outer_function defines a nested function inner_function that takes a parameter y . The inner function references the variable x from the outer function's scope. When outer_function is called with an argument of 5, it returns the inner function along with a reference to x with a value of 5. The returned inner function is assigned to the variable closure . Later, when closure is called with an argument of 3, it adds the value of x (which is 5) to the value of y (which is 3), and returns the result of 8.

Applications of Closures in Python

Closures are a powerful feature in Python that can be used in many different ways. Some of the common applications of closures include:

  • Implementing decorators
  • Implementing factory functions
  • Implementing memoization
  • Implementing function currying

Conclusion

Closures are a powerful feature in Python that allow you to create functions that retain the values of variables in their enclosing scope, even after the execution of that scope has completed. Closures are created when a nested function references a value from its outer scope, and the nested function is returned from the outer function along with the reference to the variable. Closures can be used to implement decorators, factory functions, memoization, and function currying, among other things.