Funktion i funktion i Python

I Python kan man erklære andre funktioner inden i en funktion. Lad os sige, at vi har en ydre funktion outer, inde i hvilken der findes funktionen inner:

pythondef outer():
  def inner():
    pass

Eksemplet ovenfor ser simpelt nok ud. Men ofte opstår der situationer, hvor der i funktionskroppen outer udover inner også udføres andre operationer. For at forenkle koden kunne man have flyttet inner ud til en ydre blok, men denne funktion vil kun blive brugt én gang og kun inde i funktionen outer. Derfor giver det ikke mening at flytte den ud.

Lad os se på et eksempel, hvor en liste overføres til funktionen outer. Og ved hjælp af funktionen inner vil det numeriske element i listen blive opløftet til anden potens. Til dette erklærer vi en tom liste res efter funktionen inner, i hvilken elementer vil blive akkumuleret, opløftet til anden potens i en løkke:

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

  res = []

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

  return res

Lad os kalde funktionen outer, overføre en liste som parameter og udskrive resultatet i konsollen:

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

Skriv en ydre og en indre funktion, hvis fælles arbejde vil udskrive hvert streng-element i listen med stort begyndelsesbogstav.

Задание 2

Givne funktioner:

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

  return res

Omskriv koden, så func1 bliver en indre funktion for func2.