Kazi Ndani ya Kazi katika Python
Katika Python, ndani ya kazi moja unaweza kutangaza
zingine. Hebu tuseme tuna kazi ya nje
outer, ndani yake iko
kazi inner:
def outer():
def inner():
pass
Mfano ulio hapo juu unaonekana rahisi
kutosha. Hata hivyo, mara nyingi kuna hali
ambapo katika mwili wa kazi outer zaidi ya
inner shughuli zingine pia
zinatekelezwa. Ili kurahisisha msimbo
ingeweza kuwa inner nje ya block
ya msimbo, hata hivyo kazi hii itatumika
moja tu na tu ndani ya kazi
outer. Kwa hivyo, kuiondoa nje
haina maana.
Wacha tuchunguze mfano, wakati kazi
outer inapewa orodha.
Na kwa kutumia kazi inner kipengele cha nambari
cha orodha kitaongezwa kwa nguvu ya mraba.
Kwa hili, baada ya kazi inner
tunatangaza orodha tupu res, ambayo
vitakusanywa vipengele,
viliyoinuliwa kwa mraba katika kitanzi:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Wacha tuite kazi outer,
tukiipitisha parameter orodha na tuonyeshe
matokeo kwenye konsoli:
print(outer([2, 3, 5])) # itatoa [4, 9, 25]
Andika kazi ya nje na kazi ya ndani, ambayo kazi yao ya pamoja itatoa kila kipengele cha kamba cha orodha kwa herufi kubwa.
Kazi zilizopewa:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Andika upya msimbo ili func1
iwe kazi ya ndani kwa func2.