Functie in functie in Python

In Python kun je binnen de ene functie andere functies declareren. Stel we hebben een buitenste functie outer, waarin zich een functie inner bevindt:

pythondef outer():
  def inner():
    pass

Het bovenstaande voorbeeld ziet er vrij eenvoudig uit. Er zijn echter vaak situaties waarin in het lichaam van de functie outer, naast inner, ook andere operaties worden uitgevoerd. Om de code te vereenvoudigen zou men inner naar het buitenste codeblok kunnen verplaatsen, maar deze functie zal slechts één keer worden gebruikt en alleen binnen de functie outer. Daarom heeft het geen zin om hem naar buiten te verplaatsen.

Laten we een voorbeeld bekijken waarbij aan de functie outer een lijst wordt doorgegeven. En met behulp van de functie inner wordt een numeriek element van de lijst kwadraat. Hiervoor declareren we na de functie inner een lege lijst res, waarin elementen die zijn gekwadrateerd in een lus worden opgehoopt:

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

  res = []

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

  return res

Laten we de functie outer aanroepen, er een lijst als parameter aan doorgeven en het resultaat naar de console uitvoeren:

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

Schrijf een buitenste en binnenste functie waarvan de gezamenlijke werking elk tekenreekselement van de lijst met een hoofdletter zal uitvoeren.

Задание 2

Gegeven functies:

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

  return res

Herschrijf de code zodat func1 een binnenste functie van func2 wordt.