Funzione all'interno di una funzione in Python

In Python è possibile dichiarare alcune funzioni all'interno di altre. Supponiamo di avere una funzione esterna outer, all'interno della quale si trova la funzione inner:

pythondef outer():
  def inner():
    pass

L'esempio sopra sembra abbastanza semplice. Tuttavia, spesso si verificano situazioni in cui nel corpo della funzione outer, oltre a inner, vengono eseguite altre operazioni. Per semplificare il codice si potrebbe spostare inner all'esterno del blocco, ma questa funzione verrà utilizzata solo una volta e solo all'interno della funzione outer. Quindi non ha senso spostarla fuori.

Consideriamo un esempio in cui alla funzione outer viene passata una lista. E con l'aiuto della funzione inner l'elemento numerico della lista viene elevato al quadrato. A tale scopo, dopo la funzione inner dichiariamo una lista vuota res, in cuiverranno accumulati gli elementi elevati al quadrato in un ciclo:

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

  res = []

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

  return res

Chiamiamo la funzione outer, passiamole come parametro una lista e visualizziamo il risultato nella console:

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

Scrivi una funzione esterna e una interna, il cui lavoro congiunto visualizzerà ogni elemento di tipo stringa della lista con la lettera iniziale maiuscola.

Задание 2

Date le funzioni:

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

  return res

Riscrivi il codice in modo che func1 sia una funzione interna di func2.