Функция в функция в 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.