Python-da funksiýanyň içinde funksiýa

Python-da bir funksiýalaryň içinde beýlekileri bildirip bolýar. Bizde daşarky funksiýa outer bolsun, onuň içinde bolsa inner funksiýasy bar:

pythondef outer():
  def inner():
    pass

Ýokarda görkezilen mysal ýeterlik derejede ýönekeý görünýär. Emma köplenç ýagdaýlar bar, haçanda outer funksiýasynyň bedeninde inner-den başga-da beýleki amallar ýerine ýetirilýär. Kody ýönekeýleşdirmek üçin, inner daşarky kod blogyna çykaryp bolardy, ýöne bu funksiýa diňe bir gezek we diňe outer funksiýasynyň içinde ulanylar. Şonuň üçin ony çäklerinden daşary çykarmak mana berenok.

Geliň bir mysala serediň, haçanda outer funksiýasyna sanlar sanawy berilýär. We inner funksiýasynyň ýardamy bilen sanawdaky san element inenedört derejä ýokarlandyrylar. Bunuň üçin inner funksiýasyndan soň boş sanawy res bildirýäris, onda döwüre gönükdirilen elementler ýygnanar:

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

  res = []

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

  return res

Geliň outer funksiýasyny çagyralym, ona parametr sanawyny bereliň we netijäni konsola çykaralyň:

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

Daşarky we içarky funksiýalary ýazyň, olanaryň bilelikde işi sanawyň her setir elementini baş harp bilen çykarsyn.

Задание 2

Funksiýalar berlen:

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 funksiýasynyň func2 üçin içarky funksiýa bolmagy üçin kody ýene ýazyň.