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:
def 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:
def 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:
print(outer([2, 3, 5])) # restituirà [4, 9, 25]
Scrivi una funzione esterna e una interna, il cui lavoro congiunto visualizzerà ogni elemento di tipo stringa della lista con la lettera iniziale maiuscola.
Date le funzioni:
def 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.