Funkcja w funkcji w Pythonie

W Pythonie wewnątrz jednych funkcji można deklarować inne. Załóżmy, że mamy funkcję zewnętrzną outer, wewnątrz której znajduje się funkcja inner:

pythondef outer():
  def inner():
    pass

Powyższy przykład wygląda dość prosto. Jednak często zdarzają się sytuacje, gdy w ciele funkcji outer oprócz inner wykonywane są jeszcze inne operacje. Dla uproszczenia kodu można by wynieść inner do zewnętrznego bloku kodu, jednak ta funkcja będzie użyta tylko raz i tylko wewnątrz funkcji outer. Dlatego nie ma sensu wynosić jej poza jej granice.

Przyjrzyjmy się przykładowi, gdy do funkcji outer przekazywana jest lista. A za pomocą funkcji inner element liczbowy listy będzie podnoszony do kwadratu. W tym celu po funkcji inner deklarujemy pustą listę res, w której będą gromadzone elementy podniesione do kwadratu w pętli:

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

  res = []

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

  return res

Wywołajmy funkcję outer, przekażmy jej parametr lista i wypiszmy wynik do konsoli:

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

Napisz zewnętrzną i wewnętrzną funkcję, których wspólna praca będzie wypisywać każdy łańcuchowy element listy z wielkiej litery.

Задание 2

Dane są funkcje:

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

  return res

Przepisz kod tak, aby func1 była funkcją wewnętrzną dla func2.