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