Funkcija u funkciji u Pythonu

U Pythonu je moguće deklarisati jedne funkcije unutar drugih. Neka imamo spoljnu funkciju outer, unutar koje se nalazi funkcija inner:

pythondef outer():
  def inner():
    pass

Gore navedeni primer izgleda prilično jednostavno. Međutim, često postoje situacije kada u telu funkcije outer pored inner izvršavaju se i druge operacije. Radi pojednostavljenja koda bi bilo moguće izdvojiti inner u spoljni blok koda, međutim ova funkcija će se koristiti samo jednom i samo unutar funkcije outer. Stoga nema smisla nju izdvajati.

Hajde da razmotrimo primer, kada u funkciju outer bude prosleđena lista. A pomoću funkcije inner će numerički element liste biti podignut na kvadrat. Za ovo nakon funkcije inner deklarišemo praznu listu res, u kojoj će se akumulirati elementi, kvadrirani u petlji:

pythondef outer(lst):
  def inner(num):
    return num ** 2

  res = []

  for el in lst:
    res.append(inner(el))

  return res

Hajde da pozovemo funkciju outer, prosledimo joj parametar listu i ispišemo rezultat u konzolu:

pythonprint(outer([2, 3, 5])) # ispisaće [4, 9, 25]
Задание 1

Napišite spoljnu i unutrašnju funkciju, čiji će zajednički rad ispisivati svaki element liste tipa string sa velikim početnim slovom.

Задание 2

Date su funkcije:

pythondef func1(num):
  if num > 0:
    num += 2
  return num
  
def func2(iter):
  res = []
  for el in iter:
    res.append(func1(el))

  return res

Prepišite kod tako da func1 bude unutrašnja funkcija za func2.