Python တွင် အတွင်းထဲ့ထားသော ဖန်ရှင်များ

Python တွင် ဖန်ရှင်တစ်ခုအတွင်းမှာ အခြားဖန်ရှင်များကို ကြေငြာနိုင်ပါသည်။ အပြင်ဖန်ရှင် outer ရှိပြီး ၎င်းအတွင်းမှာ ဖန်ရှင် inner ရှိနိုင်သည်ဟု ဆိုကြပါစို့:

pythondef outer():
  def inner():
    pass

အထက်ဖော်ပြပါ ဥပမာသည် လုံလောက်စွာ ရိုးရှင်းပုံရပါသည်။ သို့သော် မကြာခဏဆိုသလို ဖန်ရှင် outer ၏ body တွင် inner ကလွဲ၍ အခြား လုပ်ဆောင်ချက်များလည်း ရှိနေတတ်ပါသည်။ ကုဒ်ကို ရိုးရှင်းအောင်ပြုလုပ်ရန် inner ကို အပြင်ကုဒ်ဘလောက်သို့ ထုတ်နိုင်သော်လည်း၊ ဤဖန်ရှင်ကို တစ်ကြိမ်တည်းနှင့် ဖန်ရှင် outer အတွင်းတွင်သာ အသုံးပြုမည် ဖြစ်သည်။ ထို့ကြောင့် ၎င်းကို အပြင်သို့ထုတ်ရန် အဓိပ္ပာယ်မရှိပါ။

ဥပမာတစ်ခုကို ကြည့်ကြပါစို့၊ ဖန်ရှင် outer ထံသို့ စာရင်းတစ်ခုပို့ပေးသည်။ ဖန်ရှင် inner ကို အသုံးပြု၍ စာရင်းရှိ ကိန်းဂဏန်းအစိတ်အပိုင်းများကို စတုရန်းအထိ တင်ပေးမည်။ ဤအတွက် ဖန်ရှင် inner ပြီးနောက် ဗလာ စာရင်း res ကို ကြေငြာပါ၊ ထိုစာရင်းထဲတွင် စတုရန်းတင်ထားသော အစိတ်အပိုင်းများကို ကွင်းဆက်ထဲတွင် စုဆောင်းမည်:

pythondef outer(lst):
  def inner(num):
    return num ** 2

  res = []

  for el in lst:
    res.append(inner(el))

  return res

ဖန်ရှင် outer ကို ခေါ်ကြည့်ကြပါစို့၊ ၎င်းထံသို့ စာရင်းပါရာမီတာပေးပြီး ရလဒ်ကို console တွင် ထုတ်ပြကြည့်ကြမည်:

pythonprint(outer([2, 3, 5])) # ထွက်ရှိမည့်ရလဒ် [4, 9, 25]
Задание 1

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

Задание 2

ဖန်ရှင်များကို ပေးထားသည်:

pythondef 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 ၏ အတွင်းဖန်ရှင်ဖြစ်အောင် ကုဒ်ကို ပြန်ရေးပါ။