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