Funkcija funkcijoje Python

Python viduje vienų funkcijų galima aprašyti kitas. Tarkime, kad turime išorinę funkciją outer, kurios viduje yra funkcija inner:

pythondef outer():
  def inner():
    pass

Aukščiau pateiktas pavyzdys atrodo pakankamai paprastas. Tačiau dažnai pasitaiko situacijų, kai funkcijos outer kūne, be inner, atliekami ir kiti veiksmai. Norint supaprastinti kodą, galima būtų išskirti inner į išorinį kodo bloką, tačiau ši funkcija bus panaudota tik vieną kartą ir tik funkcijos outer viduje. Todėl nėra prasmės ją išskirti.

Pažiūrėkime pavyzdį, kai į funkciją outer perduodamas sąrašas. O naudojant funkciją inner skaitmeninis sąrašo elementas bus pakeliamas kvadratu. Tam, po funkcijos inner aprašome tuščią sąrašą res, į kurį bus renkami elementai, pakelti kvadratu cikle:

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

  res = []

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

  return res

Iškvikime funkciją outer, perduokime jai parametrą sąrašą ir išveskime rezultatą į konsolę:

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

Parašykite išorinę ir vidinę funkcijas, kurių bendras veikimas išvestų kiekvieną eilutės sąrašo elementą didžiąja raide.

Задание 2

Duotos funkcijos:

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

  return res

Perrašykite kodą taip, kad func1 būtų vidine func2 funkcija.