آموزش پایتون (Python) به زبان خیلی ساده قسمت 18 : Closure ها

در قسمت قبلی که در مورد توابع صحبت کردیم، با حالتی آشنا شدیم که یک تابع را داخل یک تابع دیگر تعریف می کردیم:

>>> def func1():
...     def func2():
...         print("Welcome to ITPro.ir")
...     func2()
...
>>> func1()
Welcome to ITPro.ir

تابع func2 در بدنه func1 که در آن تعریف شده قابل دسترس است. همچنین func2 امکان دسترسی به متغیرهای تعریف شده در بدنه خودش و بدنه func1 را دارد بعلاوه پارامتر های func1. در صورتی که func2 از پارامتر تعریف شده در func1 استفاده کند، یعنی در حال استفاده از متغیری است که خارج از scope یا بدنه خودش است. به مثال زیر دقت کنید:

>>> def func1(msg):
...     def func2():
...         print(msg)
...     func2()
...
>>> func1("Welcome to ITPro.ir")
Welcome to ITPro.ir

اما شرایط را کمی تغییر می دهیم، فرض کنید که تابع func1 به جای فراخوانی func2، آن را با دستور return بر گرداند:

>>> def func1(msg):
...     def func2():
...         print(msg)
...     return func2
...
>>> caller = func1("Welcome to ITPro.ir")
>>> caller()
Welcome to ITPro.ir

در کد بالا تابع func1 با مقدار Welcome to ITPro.ir فراخوانی شد و خروجی آن که یک تابع است داخل متغیری به نام caller قرار گرفت. در قدم بعدی با فراخوانی caller که اشاره به تابع داخلی func2 دارد مقدار مشخص شده در خروجی چاپ می شود. در زبان پایتون، زمانی که روند اجرای کد از scope یک تابع خارج می شود کلیه پارامتر ها و متغیرهای داخل آن scope نیز از بین می روند، اما func2 هنوز مقدار msg را در اختیار دارد. در زبان پایتون کاری که در کد بالا انجام شد Closure نام دارد. با استفاده از Closure ها، حتی در صورتی که تابع func1 را با عبارت del حذف کنیم، کماکان caller را می توان فراخوانی کرد:

>>> del func1
>>> caller()
Welcome to ITPro.ir

در مثال زیر یک نمونه از کاربردهای استفاده از Closure ها را مشاهده می کنید:

>>> def mul(x):
...     def inner_mul(y):
...         return x*y
...     return inner_mul
...
>>> mul2=mul(2)
>>> mul2(4)
8
>>> mul3=mul(3)
>>> mul3(7)
21
>>> mul2(4)
8
>>> mul3(9)
27

در قسمت بعدی با توابع بازگشتی (Recursive Function) در زبان پایتون آشنا خواهیم شد. ITpro باشید

نویسنده: حسین احمدی
منبع: جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#دوره_آموزشی_پایتون #آموزش_پایتون #آموزش_برنامه_نویسی_پایتون #آموزش_زبان_پایتون #آموزش_کامل_پایتون #closure_ها_در_پایتون
عنوان
1 آموزش پایتون (Python) به زبان خیلی ساده قسمت 1 : آشنایی با پایتون رایگان
2 آموزش پایتون (Python) به زبان خیلی ساده قسمت 2: نوشتن برنامه اول رایگان
3 آموزش پایتون (Python) به زبان خیلی ساده قسمت 3 : ساختار اسکریپت رایگان
4 آموزش پایتون (Python) به زبان خیلی ساده قسمت 4 : نوع داده ها رایگان
5 آموزش پایتون (Python) به زبان خیلی ساده قسمت 5 : تبدیل نوع داده رایگان
6 آموزش پایتون (Python) به زبان خیلی ساده قسمت 6 : عملگرها رایگان
7 آموزش پایتون (Python) به زبان خیلی ساده قسمت 7 : دستور شرطی IF رایگان
8 آموزش پایتون (Python) به زبان خیلی ساده قسمت 8 : حلقه ها رایگان
9 آموزش پایتون (Python) به زبان خیلی ساده قسمت 9 : توابع عددی و عدد رایگان
10 آموزش پایتون (Python) به زبان خیلی ساده قسمت 10 : رشته و توابع آن رایگان
11 آموزش پایتون (Python) به زبان خیلی ساده قسمت 11 : لیست ها رایگان
12 آموزش پایتون (Python) به زبان خیلی ساده قسمت 12 : Tuple ها رایگان
13 آموزش پایتون (Python) به زبان خیلی ساده قسمت 13 : دیکشنری ها رایگان
14 آموزش پایتون (Python) به زبان خیلی ساده قسمت 14 : مجموعه ها Sets رایگان
15 آموزش پایتون (Python) به زبان خیلی ساده قسمت 15 : Zip و پیمایش رایگان
16 آموزش پایتون (Python) به زبان خیلی ساده قسمت 16 : Comprehension رایگان
17 آموزش پایتون (Python) به زبان خیلی ساده قسمت 17 : توابع (Function رایگان
18 آموزش پایتون (Python) به زبان خیلی ساده قسمت 18 : Closure ها رایگان
19 آموزش پایتون (Python) به زبان خیلی ساده قسمت 19 : توابع بازگشتی رایگان
20 آموزش پایتون (Python) به زبان خیلی ساده قسمت 20 : ماژول ها رایگان
21 آموزش پایتون (Python) به زبان خیلی ساده قسمت 21 : پکیج ها رایگان
22 آموزش پایتون (Python) به زبان خیلی ساده قسمت 22 : شی گرایی رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره بهاره می تونی امروز ارزونتر از فردا خرید کنی ....