Funcție în funcție în Python
În Python, în interiorul unor funcții se pot declara
alte funcții. Să presupunem că avem funcția exterioară
outer, în interiorul căreia se află
funcția inner:
def outer():
def inner():
pass
Exemplul de mai sus pare suficient de
simplu. Cu toate acestea, adesea există situații în care
în corpul funcției outer, pe lângă
inner, se execută și alte
operații. Pentru a simplifica codul, s-ar putea
extrage inner în blocul exterior
de cod, dar această funcție va fi utilizată
doar o singură dată și doar în interiorul funcției
outer. De aceea, nu are sens să o extragem
în afara ei.
Să analizăm un exemplu în care funcției
outer i se transmite o listă. Iar cu ajutorul
funcției inner, elementul numeric
al listei va fi ridicat la pătrat.
Pentru aceasta, după funcția inner
declarăm lista goală res, în
care vor fi acumulate elementele
ridicate la pătrat într-un ciclu:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Să apelăm funcția outer,
să-i transmitem ca parametru lista și să afișăm
rezultatul în consolă:
print(outer([2, 3, 5])) # va afișa [4, 9, 25]
Scrieți o funcție exterioară și una interioară, munca în comun a cărora va afișa fiecare element string al listei cu literă mare.
Sunt date funcțiile:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Rescrieți codul astfel încât func1
să fie o funcție interioară pentru func2.