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:

pythondef 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:

pythondef 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:

pythonprint(outer([2, 3, 5])) # itatoa [4, 9, 25]
Задание 1

Andika kazi ya nje na kazi ya ndani, ambayo kazi yao ya pamoja itatoa kila kipengele cha kamba cha orodha kwa herufi kubwa.

Задание 2

Kazi zilizopewa:

pythondef 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.