Closures Function

Last Updated: 01th September 2025


  • A closure is a nested function that remembers variables from its enclosing scope even after the outer function has finished executing.
  • In short: (inner function) + (environment where it was created).

Hinglish Tip 🗣: Closure ko samjho — ek chhota function jo apne outer function ke variables ko “yaad” rakhta hai, jaise ek sealed box ke andar values saved ho.

✏️ Basic Syntax (pattern)

def outer(arg):
    local_var = arg

    def inner():
        # inner uses local_var from outer
        return local_var * 2

    return inner  # return the function object (not called)
  • outer() runs and returns inner function object; inner still has access to local_var.

Example 1.

def greet(name):
    def message():
        return f"Hello, {name}!"
    return message

say_name = greet("Sadhu")
print(say_name())   # Output: Hello, Sadhu!

Example 2.

def counter():
    count = 0
    def increment():
        nonlocal count
        count += 1
        return count
    return increment

c = counter()
print(c())  # 1
print(c())  # 2
print(c())  # 3

Example 3.

def make_adder(x):
    def adder(y):
        return x + y
    return adder

add_10 = make_adder(10)
print(add_10(5))  # Output: 15
print(add_10(7))  # Output: 17