Функция ішіндегі функция Python-да

Python-да бір функциялардың ішінде басқаларын жариялауға болады. Бізде сыртқы функция outer болсын, оның ішінде inner функциясы орналасқан:

pythondef outer():
  def inner():
    pass

Жоғарыда келтірілген мысал жеткілікті қарапайым көрінеді. Алайда, функцияның outer денесінде 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 функциясын шақырып, оған параметр ретінде тізім берейік және нәтижені консольге шығарайық:

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

Сыртқы және ішкі функцияларды жазыңыз, олардың бірлескен жұмысы тізімнің әрбір жол элементін бас әріппен шығарады.

Задание 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 үшін ішкі функция болатындай етіп қайта жазыңыз.