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:
def 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:
def 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ë:
print(outer([2, 3, 5])) # do të shfaqë [4, 9, 25]
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.
Janë dhënë funksionet:
def 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.