Funksioni brenda funksionit në Python

Në Python, brenda një funksioni mund të deklarohen funksione të tjerë. Le të themi se kemi funksionin e jashtëm outer, brenda të cilit ndodhet funksioni inner:

pythondef outer():
  def inner():
    pass

Shembulli i dhënë më sipër duket mjaft i thjeshtë. Sidoqoftë, shpesh ka situata kur në trupin e funksionit outer, përveç inner, ekzekutohen edhe operacione të tjera. Për të thjeshtuar kodin, mund të nxirrej inner në bllokun e jashtëm të kodit, por ky funksion do të përdoret vetëm një herë dhe vetëm brenda funksionit outer. Prandaj, nuk ka kuptim ta nxjerrim atë jashtë.

Le të shqyrtojmë një shembull, kur në funksionin outer i transmetohet një listë. Dhe me ndihmën e funksionit inner, elementi numerik i listës do të ngrihet në katror. Për këtë, pas funksionit inner deklarojmë listën bosh res, në të cilën do të grumbullohen elementët ngritur në katror në një cikël:

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

  res = []

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

  return res

Le ta thërrasim funksionin outer, t'i japim atij si parametër listën dhe të shfaqim rezultatin në konsolë:

pythonprint(outer([2, 3, 5])) # do të shfaqë [4, 9, 25]
Задание 1

Shkruani një funksion të jashtëm dhe një të brendshëm, puna e përbashkët e të cilëve do të shfaqë çdo element vargor të listës me shkronjë të madhe.

Задание 2

Janë dhënë funksionet:

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

  return res

Rishkruani kodin në mënyrë që func1 të jetë funksion i brendshëm për func2.