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:

pythondef 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:

pythondef 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ă:

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

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.

Задание 2

Sunt date funcțiile:

pythondef 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.