Python တွင် အတွင်းထဲ့ထားသော ဖန်ရှင်များ
Python တွင် ဖန်ရှင်တစ်ခုအတွင်းမှာ အခြားဖန်ရှင်များကို ကြေငြာနိုင်ပါသည်။
အပြင်ဖန်ရှင် outer ရှိပြီး ၎င်းအတွင်းမှာ
ဖန်ရှင် inner ရှိနိုင်သည်ဟု ဆိုကြပါစို့:
def outer():
def inner():
pass
အထက်ဖော်ပြပါ ဥပမာသည် လုံလောက်စွာ
ရိုးရှင်းပုံရပါသည်။ သို့သော် မကြာခဏဆိုသလို
ဖန်ရှင် outer ၏ body တွင်
inner ကလွဲ၍ အခြား
လုပ်ဆောင်ချက်များလည်း ရှိနေတတ်ပါသည်။
ကုဒ်ကို ရိုးရှင်းအောင်ပြုလုပ်ရန်
inner ကို အပြင်ကုဒ်ဘလောက်သို့
ထုတ်နိုင်သော်လည်း၊ ဤဖန်ရှင်ကို
တစ်ကြိမ်တည်းနှင့် ဖန်ရှင်
outer အတွင်းတွင်သာ အသုံးပြုမည်
ဖြစ်သည်။ ထို့ကြောင့် ၎င်းကို အပြင်သို့ထုတ်ရန်
အဓိပ္ပာယ်မရှိပါ။
ဥပမာတစ်ခုကို ကြည့်ကြပါစို့၊ ဖန်ရှင်
outer ထံသို့ စာရင်းတစ်ခုပို့ပေးသည်။
ဖန်ရှင် inner ကို အသုံးပြု၍
စာရင်းရှိ ကိန်းဂဏန်းအစိတ်အပိုင်းများကို
စတုရန်းအထိ တင်ပေးမည်။
ဤအတွက် ဖန်ရှင် inner ပြီးနောက်
ဗလာ စာရင်း res ကို ကြေငြာပါ၊
ထိုစာရင်းထဲတွင် စတုရန်းတင်ထားသော အစိတ်အပိုင်းများကို
ကွင်းဆက်ထဲတွင် စုဆောင်းမည်:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
ဖန်ရှင် outer ကို ခေါ်ကြည့်ကြပါစို့၊
၎င်းထံသို့ စာရင်းပါရာမီတာပေးပြီး
ရလဒ်ကို console တွင် ထုတ်ပြကြည့်ကြမည်:
print(outer([2, 3, 5])) # ထွက်ရှိမည့်ရလဒ် [4, 9, 25]
ပြင်ပနှင့် အတွင်းဖန်ရှင်များကို ရေးပါ၊ သူတို့ပူးပေါင်းအလုပ်လုပ်ခြင်းဖြင့် စာရင်းရှိ string အစိတ်အပိုင်းတစ်ခုစီကို အက္ခရာအကြီးဖြင့် ထုတ်ပေးမည်။
ဖန်ရှင်များကို ပေးထားသည်:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
func1 သည်
func2 ၏ အတွင်းဖန်ရှင်ဖြစ်အောင်
ကုဒ်ကို ပြန်ရေးပါ။