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