Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyPmFnCl 23 of 129 menu
◀ ▶

Python တွင် Closure များ

Closure (closure) ဆိုသည်မှာ လုပ်ဆောင်ချက်တစ်ခုနှင့် ၎င်းရရှိနိုင်သော ပြင်ပကိန်းရှင်များ အားလုံးပါဝင်သည်ကို ဆိုလိုသည်။

Python တွင် "လုပ်ဆောင်ချက်၏ closure" ဟု ပြောသောအခါ များသောအားဖြင့် ထိုလုပ်ဆောင်ချက်ကိုယ်တိုင်ကို မဟုတ်ဘဲ ၎င်း၏ ပြင်ပကိန်းရှင်များကိုသာ ရည်ညွှန်းလေ့ရှိသည်။

ကျွန်ုပ်တို့တွင် outer လုပ်ဆောင်ချက်တစ်ခုရှိပြီး ၎င်းထဲတွင် i ဟူသော ကိန်းရှင်ကို ကြေညာထားကာ အတွင်းပိုင်း inner လုပ်ဆောင်ချက်ရှိသည်ဆိုပါစို့။ ၎င်းထဲတွင် i ကို တစ်ထပ်တိုးပေါင်းမည်။ i ကိန်းရှင် မှန်ကန်စွာအလုပ်လုပ်စေရန် nonlocal ညွှန်ကြားချက်ကို ၎င်းထဲသို့ ထည့်ပေးပါမည်။

def outer(): i = 0 def inner(): nonlocal i i += 1 print(i) return inner

ယခု အပြင်ဘက်လုပ်ဆောင်ချက်ကို res ဟူသော ကိန်းရှင်ထဲသို့ ထည့်ပြီး ၎င်းကို ကွင်းစကွင်းပိတ်များဖြင့် ခေါ်ယူကြည့်ပါမည်။

res = outer() res() # ၁ ကို ပြသမည်

res ကို အကြိမ်အနည်းငယ် ခေါ်ယူကြည့်ပါစို့။ ကုဒ်အား လုပ်ဆောင်ပြီးနောက် တစ်ကြိမ်စီတိုင်းတွင် i ရေတွက်ကိန်းသည် တစ်ထပ်တိုးသွားမည်။

res() # ၂ ကို ပြသမည် res() # ၃ ကို ပြသမည် res() # ၄ ကို ပြသမည်

သို့သော် ဤတွင် အရေးကြီးသော အချက်တစ်ခုရှိသည် - outer လုပ်ဆောင်ချက်ကို ခေါ်ယူတိုင်းသည် ၎င်း၏ ကိုယ်ပိုင်ရေတွက်ကိန်းကို တိုးမြှင့်ပေးမည်။ outer ကို ပထမအကြိမ်ခေါ်ယူခြင်းအား res1 ကိန်းရှင်ထဲသို့ သိမ်းဆည်းပြီး ဒုတိယအကြိမ်ခေါ်ယူခြင်းအား res2 ထဲသို့ သိမ်းဆည်းပါစို့။ ထို့နောက် ၎င်းတို့ကို အစဉ်လိုက် ကွန်ဆိုးထဲသို့ ပြသပါမည်။

res1 = outer() res1() # ၁ ကို ပြသမည် res1() # ၂ ကို ပြသမည် res1() # ၃ ကို ပြသမည် res2 = outer() res2() # ၁ ကို ပြသမည် res2() # ၂ ကို ပြသမည် res2() # ၃ ကို ပြသမည်

အောက်ပါကုဒ်ကို ပေးထားသည်။

def outer(): i = 10 def inner(): nonlocal i i -= 2 print(i) return inner res1 = outer() res1() res1() res2 = outer() res2() res2() res2()

ကွန်ဆိုးထဲတွင် ဘာပြသမည်နည်း ပြောပြပါ။

ခေါ်ယူတိုင်း နောက် Fibonacci ဂဏန်းကို ပြသမည့် လုပ်ဆောင်ချက်တစ်ခု ဖန်တီးပါ။

ပေးထားသော အတိုင်းအတာအတွင်း ကျပန်းကိန်းပြည့်တစ်ခုကို ထုတ်ပေးမည့် လုပ်ဆောင်ချက်တစ်ခု ဖန်တီးပါ၊ သို့သော် ထပ်တိုက်တူညီသောကိန်းများ မရှိစေရပါ။

← →
↑
မြန်မာ▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်