قابلیت Closure معمولا در زبان های برنامه نویسی functional که در آنها توابع بعنوان نوع داده اولیه شناخته می شود کاربرد دارد، برای درک بهتر مفهوم Closure به مثال زیر به زبان پایتون دقت نمایید:
def counter():
x = 0
def increment(y):
nonlocal x
x += y
print(x)
return increment
تابع counter بعنوان مقدار بازگشتی یک تابع با نام increment بر می گرداند که از متغییر x که در counter تعریف شده است درون تابع increment استفاده شده است. بدلیل اینکه تابع increment به متغییر x دسترسی دارد و مقدار آن را نیز تغییر می دهد، تابع counter باید یک closure که حاوی یک ارجاع (reference) به تابع increment است بر گرداند.
closure بازگشتی توسط تابع counter را می توان در یک متغییر ذخیره کرد:
counter1_increment = counter()
counter2_increment = counter()
حالا فراخوانی متد increment درون closure نتیجه درست برای ما بر می گرداند:
counter1_increment(1) # prints 1
counter1_increment(7) # prints 8
counter2_increment(1) # prints 1
counter1_increment(1) # prints 9
counter2_increment(1) # prints 2
منبع.