Funkcija v funkciji v Pythonu

V Pythonu je mogoče znotraj enih funkcij deklarirati druge. Recimo, da imamo zunanjo funkcijo outer, znotraj katere je funkcija inner:

pythondef outer():
  def inner():
    pass

Zgornji primer izgleda dokaj preprosto. Vendar pa so pogosto situacije, ko se v telesu funkcije outer poleg inner izvajajo še druge operacije. Za poenostavitev kode bi lahko inner premaknili v zunanji blok kode, vendar bo ta funkcija uporabljena le enkrat in samo znotraj funkcije outer. Zato je njenega premikanja ven nesmiselno.

Oglejmo si primer, ko se v funkcijo outer posreduje seznam. S pomočjo funkcije inner bo številski element seznama dvignjen na kvadratno potenco. Za to po funkciji inner deklariramo prazen seznam res, v katerega bomo zlagali elemente, dvignjene na kvadrat v zanki:

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

  res = []

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

  return res

Pokličimo funkcijo outer, posredujmo ji parameter seznam in izpišimo rezultat v konzolo:

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

Napišite zunanjo in notranjo funkcijo, katerih skupno delovanje bo izpisovalo vsak nizni element seznama z veliko začetnico.

Задание 2

Podane so 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 kodo tako, da bo func1 notranja funkcija za func2.