Python တွင် အတွင်းပိုင်း လုပ်ဆောင်ချက်များနှင့် အလုပ်လုပ်ရာတွင် သတိထားရမည့်အချက်များ
Python တွင် နစ်ထပ်လုပ်ဆောင်ချက်များ (nested functions) သာမက၊ လုပ်ဆောင်ချက်တစ်ခုသည် အခြားတစ်ခုကို ပြန်ပေးနိုင်သည်။ ဥပမာအားဖြင့်၊ outer လုပ်ဆောင်ချက်သည် inner လုပ်ဆောင်ချက်၏ မူရင်းကုဒ်ကို ရလဒ်အဖြစ် ပြန်ပေးသည် ဆိုကြပါစို့။
def outer():
def inner():
return '+++'
return inner
outer ခေါ်ဆိုမှုကို res ဟူသော ကိန်းရှင်ထဲသို့ ထည့်ကြည့်ကြပါစို့။
res = outer()
print(res)
ကုဒ်အလုပ်လုပ်ပြီးနောက် လုပ်ဆောင်ချက်ပါသည့် အရာဝတ္ထု (object) ကို ပြသပေးမည်။
<function outer.<locals>.inner at 0x000001564A212B90>
အကယ်၍ res ကိန်းရှင်ကို ကွင်းစကွင်းပွင်း (parentheses) များဖြင့် ခေါ်ဆိုပါက၊ '+++' ဆိုသော စာကြောင်းကို ပြန်ရမည်။
print(res()) # '+++' ကို ပြသပေးမည်
ကုဒ်ကို res အတွင်းouter ကို ကိုယ်တိုင်ကိုယ်ကျခေါ်ဆိုရန်နှင့် inner လုပ်ဆောင်ချက်ကို ခေါ်ဆိုရန် ကွင်းစကွင်းပွင်း နှစ်ထပ်ဖြင့် ပြန်ရေးနိုင်သည်။ ၎င်းမှ အပြင်ဘက်လုပ်ဆောင်ချက်၏ ညာဘက်တွင် ၎င်းအတွင်း နစ်ထပ်ထည့်ထားသည့် လုပ်ဆောင်ချက်အရေအတွက်အတိုင်း အပိုကွင်းစကွင်းပွင်းများ ထည့်သွင်းနိုင်သည်ကို နားလည်နိုင်သည်။
res = outer()()
print(res) # '+++' ကို ပြသပေးမည်
အောက်ပါကုဒ်ကို ပေးထားသည်။
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Console တွင် ဘာပြသမည်ကို ပြောပြပါ။
အောက်ပါကုဒ်ကို ပေးထားသည်။
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Console တွင် ဘာပြသမည်ကို ပြောပြပါ။