Функцыя ў функцыі ў 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.